【发布时间】:2017-05-12 17:05:26
【问题描述】:
我有一个使用 CMake 作为其构建系统的 C++ 项目。我想要以下行为:
如果 cmake 以cmake .. 调用,则CMAKE_CXX_FLAGS 为-O3 -Wall -Wextra
如果 cmake 以cmake .. -DCMAKE_BUILD_TYPE=Debug 调用,则CMAKE_CXX_FLAGS 为-g -Wall -Wextra
我尝试了以下
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
set(CMAKE_CXX_FLAGS "-O3 -Wall -Wextra")
set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -Wextra")
但这有一个大问题。首先,如果使用第二次调用,那么-O3 和-g 标志都会传递给编译器。此外,如果我使用第二次调用和之后的第一次调用,CMAKE_BUILD_TYPE 将保持 Debug 尽管没有明确订购 - 所以我得到了一个 Debug 版本,尽管我想要一个优化的版本。
为什么?我该怎么做才能获得所需的行为?
【问题讨论】:
标签: c++ cmake compiler-optimization