变量=@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 读取以确定如何构建您的项目。 configureMakefileMakefile.config.in 通常与源代码一起提供。

以上是关于变量=@value@ 在 Makefiles的主要内容,如果未能解决你的问题,请参考以下文章

python多进程共享变量Value使用tips

变量传递

工具类使用@Value将信息注入到静态变量中

spring @Value如何为变量java赋值[关闭]

java Spring在@Value子句中使用环境变量。

环境变量和@Value 在 Spring Boot 上不能一起工作