@CPPFLAGS@在 Makefile.in 中意味着什么?



我有一个通过配置生成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。 但很可能你真的不想这样做。 这很难说,这取决于您认为要添加的标志。

最新更新