2012-07-25 6 views
9

私は、外部変数名は2つの@シンボル、それらの外部変数から来Makefile.inと変数置換

# @[email protected] 

package = @[email protected] 

の間で囲まれている変数の定義を参照してください?また、GNUマニュアルでは、2つの記号の間の変数を正確に囲んでいるのはどういう意味ですか?@の意味ですか?それはMakefile.in特有のものですか?

ありがとうございます。

答えて

8

これは自作です。

./configureの実行が終了すると、最後に可変置換の値(AC_SUBSTが宣言されている)を持つシェルスクリプトであるconfig.statusというファイルが生成されて実行されます。

AC_CONFIG_FILESで宣言されているものは、によって処理され、通常foo.infooに変換します。

AutomakeはMakefile.inMakefile.amを処理するときに、それがAM_SUBST_NOTMAKE呼び出しによって抑制いない限り、任意AC_SUBST変数は自動的に、(FOO = @[email protected]ような宣言を使用して)利用可能にされます。

+0

質問で「PACKAGE_NAME」はどうですか?私の 'Makefile.am'では' @datadir @/@ package_name @ 'を使用しましたが、 '$ {datarootdir}/@ package_name @'に置き換えられましたが、これは明らかに正しくありません。 – jww

+0

'PACKAGE_NAME'は特別です。これは下記のtiwoのように' AC_INIT'によって設定されます。 –

3

(私は専門家ではありませんが)はい、それらはMakefile.inに固有であり、Makefileを組み立てるときにはconfigureが置き換えられます。the Autoconf Manual, section 4.8を参照してください。例えば、@[email protected]は、AC_INITによって定義されます。

+0

また、[Jack's answer](http://stackoverflow.com/a/11648552)も読んでください(チェックマークを付けてください)。 – tiwo