148

GNU Make 中的 CPPFLAGS 和 CXXFLAGS 有什么区别?

4

4 回答 4

225

CPPFLAGS应该用于C P re P处理器的标志;CXXFLAGS用于 C++ 编译器的标志。

make 中的默认规则(无论如何在我的机器上)传递CPPFLAGS给几乎所有内容,CFLAGS仅在编译和链接 C 时CXXFLAGS传递,并且仅在编译和链接 C++ 时传递。

于 2009-01-30T14:23:40.387 回答
34

默认情况下,CPPFLAGS将提供给 C 预处理器,而CXXFLAGS将提供给 C++ 编译器。

GNU Make Manual是解决此类问题的好资源(请参阅隐式变量)。

于 2009-01-30T14:16:03.303 回答
18

CPPFLAGS 用于 C 预处理器,而 CXXFLAGS 用于 C++ 编译器。

这里

于 2009-01-30T14:17:39.697 回答
0

默认情况下,它们被设置为某些东西。

在实践中,您需要知道每个项目的作用。几乎没有人使用 make 内置的那些默认值,如果你依赖于,例如,CPPFLAGS 意思是“C 预处理器的标志”,你会发现你关心的项目已经用它来表示“C++ 编译器的标志”反而。CFLAGS 标志是否被传递给 C++ 编译行?有时。不总是。等等等等等等。

于 2017-09-28T21:27:50.847 回答