我有一个C++项目,它使用CMake作为它的构建系统.我想要以下行为:
如果调用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")
Run Code Online (Sandbox Code Playgroud)
但这有一个很大的问题.首先,如果使用第二次调用,则将两者-O3和-g标志传递给编译器.此外,如果我使用第二次调用和之后的第一次调用,虽然没有明确排序,但CMAKE_BUILD_TYPE仍然保留Debug- 所以我得到一个Debug构建,尽管我想要一个优化的构建.
为什么?我该怎么做才能获得理想的行为?