0

我阅读了有关 CPPFLAGS 的文档。很快,我了解到 CPPFLAGS 用于将参数传递给编译器。makefile 中的示例用法 CPPFLAGS 如下。

gcc $(CPPFLAGS) main.c -o main.o

执行制作

make CPPFLAGS=-I../header

什么是特殊的 CPPFLAGS 文本?它可以互换任何其他文本,如“FOO”。FOO 变量和 CPPFLAGS 变量有什么区别?将所有 CPPFLAGS 文本替换为 FOO 文本构建再次成功,没有任何变化。

实际需要解决的主要问题。有很多makefile。这些 makefile 中没有包含 CPPFLAGS 变量。有没有办法在不更改 makefile 的情况下传递编译器选项。

谢谢。

4

1 回答 1

1

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

三点特别之处CPPFLAGS

  1. 这是许多工具遵循的约定。最值得注意的是 GNU autoconf/automake。
  2. GNU Make 提供了隐式规则来构建许多目标类型。从 C 和 C++ 源代码编译时,这些隐式规则使用CPPFLAGS变量。.o如有必要,可以将这些规则替换为自己的规则。
  3. 当您使用CPPFLAGS预处理器标志时,您遵循最小惊讶原则

这些 makefile 中没有包含 CPPFLAGS 变量

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

于 2012-10-05T11:06:55.060 回答