私はカスタム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.sh
autoreconf
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_AUTOMAKE
。
configure.ac
これはGNUコーディング標準に従わないことをautotoolsに通知し、AutomakeはAUTHORS、COPYING、INSTALL、NEWS、README、およびChangeLogファイルを含む一般的なGNUプロジェクトテキストファイルを生成しません。これらのファイルを自動的に生成することは実際には役に立ちません。いつでも自分で作ることができます。
答え2
問題の原因は、-f
ie--force
で示されていることですautoreconf
。
マニュアルページには「すべてのファイルを廃止予定とみなす」と記載されています。HTMLが手動で入力されました。さらに誤解を招く点は次のとおりです。
configure
入力ファイルよりも最新のスクリプトと構成ヘッダーを再生成することもできます(configure.ac
存在する場合も同様aclocal.m4
)。
これは設定スクリプトについてのみ説明しますが、実際には標準のGNUファイルも処理します。
それは明らかです、autoreconf -f
実際に呼び出され、automake --force-missing
「標準ファイル強制更新」というより明確な説明があります。HTML手動入力より明確にするには:
とともに使用すると、
--add-missing
標準ファイルがソースツリーにすでに存在していても再インストールされます。 [… ]
-f
通貨からラベルを削除するとautoreconf
問題が解決します。
結論として:タスクを実行している人はautoreconf
手動エントリを作成できません。この仕事をする人はautomake
できる。