我有一个通过配置生成Makefile.am的 Makefile.in 文件。之后,使用自动制作,Makefile.am 创建生成文件。
现在我想在生成的生成文件中添加一个定义。问题是,在生成的 Makefile 中,我在变量 CPPFLAG 中找到了一个标志列表,但在 Makefile.in 中CPPFLAG的定义中,我只找到了一行按以下方式编写的行:
CPPFLAGS = @CPPFLAGS@
@CPPFLAGS@
是什么意思?以及如何在生成的生成文件中设置新标志?
CPPFLAGS 代表 C 预处理器标志。
您可以将其设置为环境变量或通过命令行设置:
CPPFLAGS="-g -Wall -O0" automake
或
CPPFLAGS="-g -Wall -O0" make
来自 gnu 制作手册:
CPPFLAGS
Extra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).
字符串@CPPFLAGS@
由配置脚本扩展为执行configure
时的 CPPFLAG 值。 换句话说,如果您运行configure CPPFLAGS=foo
,则@CPPFLAGS@
将扩展到字符串foo
。
自动生成早在调用配置之前就已运行。automake所做的只是在构建该文件时将字符串@CPPFLAGS@
添加到 Makefile.in。
作为项目维护者,您不应编辑这些值。 这是用户能够在配置时向生成添加标志的机制。
如果要添加标志,则应在 Makefile.am 中分配给AM_CPPFLAGS
。 但很可能你真的不想这样做。 这很难说,这取决于您认为要添加的标志。