カスタムINSTALL
ファイルを持つプロジェクトに取り組んでいます。 automake --add-missing
(より正確にはautoreconf -i
)を実行すると、GNUのデフォルトのINSTALL
ファイルが生成され、ファイルが上書きされます。
この動作を防ぐにはどうすればよいですか? GNU INSTALL
ファイルをまったく生成しないか、別の名前で作成する必要があります。
また、automake
が生成する可能性のある他のファイルを無効にしたくありません。
編集1:automake
マニュアル から:
--add-missing
オプションが指定されている場合、automake
は、INSTALL
ファイルの汎用バージョンと、GNU General Public License […]の現在のバージョンのテキストを含む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
問題の原因は、-f
、つまりautoreconf
への--force
タグでした。
そのmanページには、「すべてのファイルが廃止されたと見なす」と記載されていますが、これは少しあいまいなので、最初は問題に関連付けることができませんでした。 そのhtml手動入力 はさらに誤解を招く可能性があります:
入力ファイル(
configure.ac
および存在する場合はaclocal.m4
)よりも新しいconfigure
スクリプトおよび構成ヘッダーも再作成します。
構成スクリプトについてのみ説明しますが、実際には、標準のGNUファイルも処理します。
そして結局のところ 、autoreconf -f
は実際にautomake --force-missing
を呼び出します。これには、「標準ファイルの強制更新」というより明確な説明があります。 そのhtml手動エントリ それをさらに明確にします:
--add-missing
と一緒に使用すると、標準ファイルがソースツリーにすでに存在している場合でも再インストールされます。 […]
autoreconf
呼び出しから-f
タグを削除すると、これが解決されました。
結論:autoreconf
で作業している人々は手動エントリを書くことができません。 automake
で作業している人はできます。
AM_INIT_AUTOMAKE
のconfigure.ac
にforeign
オプションを追加します。これにより、autotoolsにGNUコーディング標準に準拠していないことが通知され、Automakeは通常のGNU AUTHORS、COPYING、INSTALLを含むプロジェクトテキストファイルを作成しません。 、NEWS、README、およびChangeLogファイル。これらのファイルの自動作成は実際にはかなり役に立ちません。いつでも自分で作成できます。