CPPFLAGS
应该用于 C PreP 处理器的标志; CXXFLAGS
用于 C++ 编译器的标志。
make 中的默认规则(无论如何,在我的机器上)将 CPPFLAGS
传递给几乎所有内容,CFLAGS
仅在编译和链接 C 时传递,而 CXXFLAGS
仅在编译和链接 C++ 时传递。
默认情况下,CPPFLAGS
将提供给 C 预处理器,而 CXXFLAGS
将提供给 C++ 编译器。
GNU Make Manual 是解决此类问题的好资源(请参阅 Implicit Variables)。
默认情况下,它们被设置为某些东西。
在实践中,您需要知道每个项目的作用。几乎没有人使用 make 内置的那些默认值,如果你依赖于,例如,CPPFLAGS 意思是“C 预处理器的标志”,你会发现你关心的项目用它来表示“C++ 编译器的标志”反而。 CFLAGS 标志是否被传递给 C++ 编译行?有时。不总是。等等等等等等。
x
是打开它的+
,因为C++FLAGS
会炸毁编译器。 ...我可能迟到了聚会,但这仍然比按时到达错误的聚会要好。CPPFLAGS
NOT 但CXXFLAGS
是。