在Makefile.in
我看到变量定义中,外部变量名称包含在两个@
符号之间
# @configure_input@
package = @PACKAGE_NAME@
那些外部变量从何而来?另外,我在 GNU 手册中找不到在两个@
符号之间精确包含变量的含义是什么?它是 Makefile.in 特有的吗?
谢谢你。
这是一个自动配置的事情。
完成./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
.
(我不是专家,但是)是的,它们特定于 Makefile.in,并configure
在组装时替换它们Makefile
,请参阅 Autoconf 手册,第 4.8 节。例如,@PACKAGE_NAME@
由AC_INIT定义。