在Makefile.in
中,我看到了变量定义,其中在两个@
符号之间包含了外部变量名称
# @configure_input@
package = @PACKAGE_NAME@
这些外部变量来自哪里?另外,我在GNU手册中找不到在两个
@
符号之间完全包含变量的含义是什么?它特定于Makefile.in吗?谢谢。
最佳答案
这是一个autoconf的事情。./configure
完成运行后,将生成并执行一个名为config.status
的文件,该文件是一个shell脚本,具有变量替换的最终值(用AC_SUBST
声明的任何内容)。
在AC_CONFIG_FILES
中声明的所有内容均由config.status
处理,通常是将foo.in
转换为foo
。
当automake将Makefile.am
处理为Makefile.in
时,任何AC_SUBST
变量都会自动可用(使用类似FOO = @FOO@
的声明),除非通过调用AM_SUBST_NOTMAKE
来抑制它。