automakeがINSTALLを上書きするのを防ぐ方法は?

automakeがINSTALLを上書きするのを防ぐ方法は?

私はカスタムINSTALLファイルを使ってプロジェクトを進めています。実行automake --add-missing(より正確にはautoreconf -i)を実行すると、GNUベースINSTALLファイルが作成され、このファイルでファイルが上書きされます。

この動作を防ぐにはどうすればよいですか? GNUINSTALLファイルをまったく生成しないか、別の名前で生成したいと思います。

automakeまた、作成できる他のファイルを無効にしたくありません。


編集1:~からautomake手動:

--add-missingこのオプションを指定すると、automakeファイルの汎用バージョンがGNU General Public License [...]の現在のバージョンテキストを含むファイルINSTALLと共に追加されます。COPYINGただし、既存のCOPYING ファイルは削除されませんautomake

既存のCOPYINGファイルを上書きしないとはいえ、INSTALLファイルの内容については何も言わず、無条件に上書きされるように見えます。

編集2:要求されたように、これが私が持っていたconfigure.acものと私たちがプロジェクトで実行したMakefile.amものです:autogen.shautoreconf

configure.ac:

AC_INIT([program name], [version number], [bug report], [short name], [url])
AC_CONFIG_SRCDIR([Main/Source/main.cpp])

AM_PROG_AS 
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_PROG_CXX

CFLAGS="$CFLAGS $SDL_CFLAGS "
LIBS="$LIBS $SDL_LIBS"
CPPFLAGS="$SDL_CFLAGS -DLINUX
          -DLOCAL_STATE_DIR=\\\"$sharedstatedir/<program name>\\\"
          -DDATADIR=\\\"$datadir\\\" -DUSE_SDL -DGCC"

AC_PROG_INSTALL
AC_PROG_RANLIB
AC_CONFIG_FILES(<list of Makefiles in subdirs>)
AC_OUTPUT

Makefile.am:

SUBDIRS = FooLib Main Bar Baz
EXTRA_DIST = LICENSING <and a bunch of unrelated files>

autogen.sh:

autoreconf -f -i

答え1

foreignにオプションを追加しますAM_INIT_AUTOMAKEconfigure.acこれはGNUコーディング標準に従わないことをautotoolsに通知し、AutomakeはAUTHORS、COPYING、INSTALL、NEWS、README、およびChangeLogファイルを含む一般的なGNUプロジェクトテキストファイルを生成しません。これらのファイルを自動的に生成することは実際には役に立ちません。いつでも自分で作ることができます。

答え2

問題の原因は、-fie--forceで示されていることですautoreconf

マニュアルページには「すべてのファイルを廃止予定とみなす」と記載されています。HTMLが手動で入力されました。さらに誤解を招く点は次のとおりです。

configure入力ファイルよりも最新のスクリプトと構成ヘッダーを再生成することもできます(configure.ac存在する場合も同様aclocal.m4)。

これは設定スクリプトについてのみ説明しますが、実際には標準のGNUファイルも処理します。

それは明らかですautoreconf -f実際に呼び出され、automake --force-missing「標準ファイル強制更新」というより明確な説明があります。HTML手動入力より明確にするには:

とともに使用すると、--add-missing標準ファイルがソースツリーにすでに存在していても再インストールされます。 [… ]

-f通貨からラベルを削除するとautoreconf問題が解決します。

結論として:タスクを実行している人はautoreconf手動エントリを作成できません。この仕事をする人はautomakeできる。

関連情報