变量=@value@ 在 Makefiles
Posted
技术标签:
【中文标题】变量=@value@ 在 Makefiles【英文标题】:variable=@value@ in Makefiles 【发布时间】:2012-06-18 00:09:12 【问题描述】:我了解@
禁止在 Makefile 中打印命令...
http://www.gnu.org/software/make/manual/make.html#Echoing
...我知道$@
是目标名称...
http://www.gnu.org/software/make/manual/make.html#Automatic-Variables
...但我找不到任何关于这样一行可能意味着什么的信息:
variable=@value@
我不想在这里修复任何东西,只是想更好地理解 Makefile。
更新:GNU autoconf 手册的“Makefile Subsituations”部分解释说它是一个被 autoconf 替换的值。
【问题讨论】:
我认为这没有什么特别之处;上下文是什么? 这是文件中的第一组行... prefix=@prefix@ exec_prefix=@exec_prefix@ ... 以此类推。 我的意思是,这个变量是干什么用的? 有些明显是路径变量,有些不是,比如CFLAGS=@CFLAGS@。 这些 Makefiles 实际上是 autoconf 的输入还是类似的东西? 【参考方案1】:通常您会在 Makefile.in
文件中找到它,这些文件由 configure
(又由 autoconf
生成)脚本处理。
在这种情况下,@X@
将替换为 shell 变量 $X
的值,如果 configure
被告知。如果不是,configure
将不会触及输入文件中的任何内容,因此可替换字符串保持原样。如果你问我,这些实例表明构建系统存在失误。
【讨论】:
所以autoconf生成Make,生成bash。有趣的;我得研究一下 autoconf。 @claytontstanley:不完全是。autoconf
通常执行 configures.ac ---> configure
而配置脚本本身通常执行 Makefile.config.in ---> Makefile.config
,而 Makefile
又包含 Makefile
然后由 make
读取以确定如何构建您的项目。 configure
、Makefile
和 Makefile.config.in
通常与源代码一起提供。以上是关于变量=@value@ 在 Makefiles的主要内容,如果未能解决你的问题,请参考以下文章