2012-07-25 18 views
9

Makefile.in我看到的變量定義,其中一個外部變量名在兩個@符號Makefile.in與變量置換

# @[email protected] 

package = @[email protected] 

如果這些外部變量來自之間封入?另外,我無法在GNU手冊中找到兩個@符號之間的變量是什麼意思?這是Makefile.in特有的東西嗎?

謝謝。

回答

8

這是一個autoconf的東西。

./configure完成運行,它會生成並執行一個名爲config.status文件,它是具有變量替代的最終值(任何與AC_SUBST聲明)的shell腳本。即在AC_CONFIG_FILES聲明

任何由config.status處理,通常是通過轉動foo.infoo

當automake的處理Makefile.amMakefile.in到,任何AC_SUBST變量自動提供(使用像FOO = @[email protected]聲明),除非它是通過向AM_SUBST_NOTMAKE呼叫抑制。

+0

問題中的「PACKAGE_NAME」如何?在我的'Makefile.am'中,我使用了'@datadir @/@ package_name @',並將其替換爲'$ {datarootdir}/@ package_name @',這顯然不正確。 – jww 2017-11-06 22:42:53

+0

'PACKAGE_NAME'是特殊的 - 它由'AC_INIT'設置,如下面提到的。 – 2018-02-01 06:03:58