繁体   English   中英

Makefile.in和变量替换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM