Makefile.in
外部変数名が 2 つのシンボルで囲まれている変数定義が表示され@
ます
# @configure_input@
package = @PACKAGE_NAME@
これらの外部変数はどこから来るのですか? @
また、GNU マニュアルで、変数を 2 つのシンボルで囲むとはどういう意味かを見つけることができませんでした。Makefile.inに固有のものですか?
ありがとうございました。
それはautoconfのことです。
実行が./configure
終了すると、と呼ばれるファイルが生成されて実行されます。このファイルconfig.status
は、変数置換(で宣言されたもの)の最終値を持つシェルスクリプトですAC_SUBST
。
で宣言されているものはすべて、AC_CONFIG_FILES
によって処理されconfig.status
、通常はにfoo.in
変換されfoo
ます。
automakeがに処理Makefile.am
するとき、への呼び出しによって抑制されない限りMakefile.in
、任意のAC_SUBST
変数が(のような宣言を使用して)自動的に使用可能になります。FOO = @FOO@
AM_SUBST_NOTMAKE
(私は専門家ではありませんが)はい、それらはMakefile.inに固有でありconfigure
、組み立て時にそれらを置き換えます。Autoconfマニュアルのセクション4.8Makefile
を参照 してください。たとえば、はAC_INITで定義されます。@PACKAGE_NAME@