Makefile 中的变量=@值@

3
我知道在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 Subsitutions”部分解释了它是由autoconf替换的值。


我不认为它有什么特别的意义;它的上下文是什么? - Oliver Charlesworth
这是文件中的第一组代码行...prefix=@prefix@ exec_prefix=@exec_prefix@...等等。 - user1447110
我的意思是,这个变量用来做什么? - Oliver Charlesworth
其中一些明显是路径变量,而另一些则不是,比如 CFLAGS=@CFLAGS@。 - user1447110
这些 Makefiles 实际上是 autoconf 或类似工具的输入吗? - mu is too short
1个回答

4
通常你会在 Makefile.in 文件中找到这个,这些文件由 configure (再由 autoconf) 脚本处理。

在这种情况下,如果 configure 被告知,@X@ 将被替换为 shell 变量 $X 的值,否则将不会被替换。如果没有被替换,输入文件中的可替换字符串就会保持原样。如果问我,这些实例表明了构建系统中的问题。


所以,autoconf 生成 Make,Make 生成 bash。有趣的是,我得研究一下 autoconf。 - Clayton Stanley
@claytontstanley:并不完全是这样。autoconf通常会执行configures.ac ---> configure,而配置脚本本身通常会执行Makefile.config.in ---> Makefile.config,然后由Makefile包含,最终被make读取以确定如何构建您的项目。 configureMakefileMakefile.config.in通常随源代码一起发布。 - bitmask

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接