如果我告诉 C 预处理器 #include 一个文件并使用 CPPFLAGS 来帮助查找所需的文件,那么该文件已经被包含了,对吗?如果有的话,用什么告诉 C 编译器与 CFLAGS 相同的包含目录?
最佳答案
我认为没有任何用处。
implicit make rules表示CFLAGS
仅在编译 C 程序(从 .c 到 .o)时使用。 CPPFLAGS
的值也被添加到编译器命令行中。
CPPFLAGS
还用于以下规则:
- 编译 C++ 程序
- 编译 Fortran 和 Ratfor 程序
- 预处理 Fortran 和 Ratfor 程序
- 汇编和预处理汇编程序
- 从 C、Yacc 或 Lex 程序创建 Lint 库
自 CPPFLAGS
用于 CFLAGS
的所有情况使用时,添加-I
似乎没有意义指令CFLAGS
已经在 CPPFLAGS
中.
当然,如果你的 Makefile 有通过 CFLAGS
的自定义规则到编译器,但省略 CPPFLAGS
,这是一个不同的故事。
关于C 预处理器与 C 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756501/