0

我有一个 CMake 项目,我希望能够使用 g++、MinGW/g++(每个 4.x)、Clang(3.x)和 MSVC++(>= V8)进行编译。

我想要一个带有编译器参数或命令行的预编译器符号。

这对于查看是否启用了优化以及在命令行中启用了哪些开关很有用。

例如,用编译的程序g++ -O3 -DNDEBUG -g0应该知道标志是"-O3 -DNDEBUG -g0". 在编写手动 Makefile 时,我可以简单地将标志收集到一个变量中,然后另外将其传递给编译器,生成一个命令行g++ -O3 -DNDEBUG -g0 -DCOMPILER_ARGS="-O3 -DNDEBUG -g0"

如何使用 CMake 实现这一目标?

4

2 回答 2

0

对于除 MSVC 之外的所有选项,而不是创建预处理器定义,您可能应该只make VERBOSE=1在构建或添加时使用

set(CMAKE_VERBOSE_MAKEFILE ON)

到您的 CMakeLists.txt。

对于 MSVC,您可以从 IDE 中检查每个项目的命令行参数:属性页 -> 配置属性 -> C/C++ -> 命令行和属性页 -> 配置属性 -> 链接器 -> 命令行。

于 2012-06-26T12:46:45.617 回答
0

add_definitions("-DCOMPILER_ARGS=\"${CMAKE_CXX_FLAGS}\")

但请注意,该CMAKE_CXX_FLAGS变量仅包含用户设置的标志。如果您希望使用整套编译标志,请使用 target property COMPILE_FLAGS。这个值可以通过get_target_property()函数获取。

于 2012-06-26T11:21:12.667 回答