11

Makefile.in我看到变量定义中,外部变量名称包含在两个@符号之间

# @configure_input@

package = @PACKAGE_NAME@

那些外部变量从何而来?另外,我在 GNU 手册中找不到在两个@符号之间精确包含变量的含义是什么?它是 Makefile.in 特有的吗?

谢谢你。

4

2 回答 2

10

这是一个自动配置的事情。

完成./configure运行后,它会生成并执行一个名为 的文件config.status,该文件是一个 shell 脚本,具有变量替换的最终值(用 声明的任何内容AC_SUBST)。

中声明的任何内容AC_CONFIG_FILES都由 处理config.status,通常是foo.in转为foo

当 automake 处理Makefile.amMakefile.in时,任何AC_SUBST变量都会自动变为可用(使用类似的声明FOO = @FOO@),除非它被调用AM_SUBST_NOTMAKE.

于 2012-07-25T11:20:53.340 回答
4

(我不是专家,但是)是的,它们特定于 Makefile.in,并configure在组装时替换它们Makefile,请参阅 Autoconf 手册,第 4.8 节。例如,@PACKAGE_NAME@AC_INIT定义。

于 2012-07-25T10:12:31.380 回答