传递变量来制作文件

时间:2012-10-05 09:09:44

标签: makefile

我阅读了有关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 个答案:

答案 0 :(得分:1)

  

什么是特殊的CPPFLAGS文字?它可以互换任何其他文本,如“FOO”

有关CPPFLAGS的三件事情很特别:

  1. 许多工具都遵循惯例。最值得注意的是GNU autoconf / automake。
  2. GNU Make提供implicit rules来构建许多目标类型。从C和C ++源代码编译CPPFLAGS时,这些隐式规则使用.o变量。如有必要,可以用自己的规则替换这些规则。
  3. 当您使用CPPFLAGS作为预处理程序标记时,请遵循the principle of least astonishment
  4.   

    这些makefile中没有包含CPPFLAGS变量

    如果你的意思是makefile中没有出现CPPFLAGS,可能是因为我使用了上面提到的隐式规则。