我阅读了有关CPPFLAGS的文件 . 不久,我明白CPPFLAGS用于传递参数到编译器 . makefile中的示例用法CPPFLAGS如下所示 .
gcc $(CPPFLAGS) main.c -o main.o
执行make
make CPPFLAGS=-I../header
什么是特殊的CPPFLAGS文字?它可以互换任何其他文本,如“FOO” . FOO变量和CPPFLAGS变量之间有什么区别?将所有CPPFLAGS文本替换为FOO文本构建再次成功,没有任何更改 .
实际需要解决的主要问题 . 有很多makefile . 这些makefile中没有包含CPPFLAGS变量 . 有没有办法在不更改makefile的情况下传递编译器选项 .
谢谢 .
1 回答
有关
CPPFLAGS
的三件事情很特别:许多工具都遵循惯例 . 最值得注意的是GNU autoconf / automake .
GNU Make提供implicit rules来构建许多目标类型 . 从C和C源编译
.o
时,这些隐式规则使用CPPFLAGS
变量 . 如有必要,可以用自己的规则替换这些规则 .当您使用
CPPFLAGS
作为预处理程序标志时,请遵循the principle of least astonishment .如果你的意思是makefile中没有出现
CPPFLAGS
,可能是因为我使用了上面提到的隐式规则 .