[英]Makefile.in and variable substitution
在Makefile.in
我看到變量定義,其中外部變量名稱包含在兩個@
符號之間
# @configure_input@
package = @PACKAGE_NAME@
那些外部變量來自哪里? 另外,我在GNU手冊中找不到兩個@
符號之間的變量是什么意思? 它是Makefile.in特有的東西嗎?
謝謝。
這是一個autoconf的事情。
當./configure
完成運行時,它會生成並執行一個名為config.status
的文件,該文件是一個shell腳本,它具有變量替換的最終值(使用AC_SUBST
聲明的任何AC_SUBST
)。
AC_CONFIG_FILES
聲明的任何內容都由config.status
處理,通常是將foo.in
轉換為foo
。
當automake將Makefile.am
處理為Makefile.in
,任何AC_SUBST
變量都會自動AC_SUBST
可用(使用類似FOO = @FOO@
的聲明),除非通過調用AM_SUBST_NOTMAKE
來抑制它。
(我不是專家,但是)是的,它們特定於Makefile.in,並且configure
在組裝Makefile
時替換它們,請參閱Autoconf Manual,第4.8節 。 例如, @PACKAGE_NAME@
由AC_INIT定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.