在Makefile.in
我看到的變量定義,其中一個外部變量名在兩個@
符號Makefile.in與變量置換
# @[email protected]
package = @[email protected]
如果這些外部變量來自之間封入?另外,我無法在GNU手冊中找到兩個@
符號之間的變量是什麼意思?這是Makefile.in特有的東西嗎?
謝謝。
在Makefile.in
我看到的變量定義,其中一個外部變量名在兩個@
符號Makefile.in與變量置換
# @[email protected]
package = @[email protected]
如果這些外部變量來自之間封入?另外,我無法在GNU手冊中找到兩個@
符號之間的變量是什麼意思?這是Makefile.in特有的東西嗎?
謝謝。
這是一個autoconf的東西。
當./configure
完成運行,它會生成並執行一個名爲config.status
文件,它是具有變量替代的最終值(任何與AC_SUBST
聲明)的shell腳本。即在AC_CONFIG_FILES
聲明
任何由config.status
處理,通常是通過轉動foo.in
成foo
。
當automake的處理Makefile.am
Makefile.in
到,任何AC_SUBST
變量自動提供(使用像FOO = @[email protected]
聲明),除非它是通過向AM_SUBST_NOTMAKE
呼叫抑制。
(我不是專家,但是)是的,它們是特定於Makefile.in的,當組裝Makefile
時,configure
取代它們,請參閱the Autoconf Manual, section 4.8。例如,@[email protected]
由AC_INIT定義。
也讀[傑克的答案](http://stackoverflow.com/a/11648552)(並給他那個複選標記)。 – tiwo 2012-07-25 15:15:32
問題中的「PACKAGE_NAME」如何?在我的'Makefile.am'中,我使用了'@datadir @/@ package_name @',並將其替換爲'$ {datarootdir}/@ package_name @',這顯然不正確。 – jww 2017-11-06 22:42:53
'PACKAGE_NAME'是特殊的 - 它由'AC_INIT'設置,如下面提到的。 – 2018-02-01 06:03:58