【发布时间】:2010-10-04 11:32:38
【问题描述】:
GNU Make 中的 CPPFLAGS 和 CXXFLAGS 有什么区别?
【问题讨论】:
-
你可以使用调用
make -p来打印出它的预定义变量和规则数据库
GNU Make 中的 CPPFLAGS 和 CXXFLAGS 有什么区别?
【问题讨论】:
make -p来打印出它的预定义变量和规则数据库
默认情况下,它们被设置为某些东西。
在实践中,您需要了解每个项目的用途。几乎没有人使用 make 内置的那些默认值,如果你依赖于,例如,CPPFLAGS 意思是“C 预处理器的标志”,你会发现你关心的项目已经用它来表示“C++ 编译器的标志”反而。 CFLAGS 标志是否传递给 C++ 编译行?有时。不总是。等等等等等等。
【讨论】:
CPPFLAGS 用于 C 预处理器,而 CXXFLAGS 用于 C++ 编译器。
见here。
【讨论】:
默认情况下,CPPFLAGS 将提供给 C 预处理器,而CXXFLAGS 将提供给 C++ 编译器。
GNU Make Manual 是解决此类问题的好资源(请参阅Implicit Variables)。
【讨论】:
CPPFLAGS 应该用于 C PreP处理器的标志; CXXFLAGS 用于 C++ 编译器的标志。
make 中的默认规则(无论如何,在我的机器上)将CPPFLAGS 传递给几乎所有内容,CFLAGS 仅在编译和链接 C 时传递,CXXFLAGS 仅在编译和链接 C++ 时传递.
【讨论】:
x 是一个 + ,因为 C++FLAGS 会炸毁编译器。 ...我可能迟到了聚会,但这仍然比按时到错误的聚会要好。
CPPFLAGS 是 NOT 对于 C Plus Plus 但 @987654330 @是。