通过CMAKE在Visual Studio中设置优化设置



当我使用cmake文件创建Visual Studio(2015)项目时,默认情况下,优化级别将在发布模式下设置为O2。

我找不到将其更改为CMake文件中其他值的方法。另外,我还需要构建程序数据库(.pdb)。

我尝试了:

SET(CMAKE_CXX_FLAGS "-O0")
SET(CMAKE_C_FLAGS "-O0")

SET(CMAKE_CXX_FLAGS_RELEASE "-O0")
SET(CMAKE_C_FLAGS_RELEASE "-O0")

在这里提议:

https://unix.stackexchange.com/questions/187455/how-to-compile-without-optimization-o0-using-using-cmake

没有成功。有人知道正确的方法吗?

我使用此代码:

string(REPLACE "-O2" "-O0" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
string(REPLACE "-O2" "-O0" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")

更新CMAKE_CXX_FLAGS_RELEASE,而朋友对我不起作用。做了什么:

target_compile_options(${target_name} PRIVATE "/Zi")   
target_compile_options(${target_name} PRIVATE "/Ob0")   
target_compile_options(${target_name} PRIVATE "/Od")   
target_compile_options(${target_name} PRIVATE "/RTC1")   
message(STATUS "updating options for target: ${target_name}")

似乎Cmake 3.x和Up拥有S.T.如果我们添加与上一个选项相冲突的编译选项,则较新的选项将优先。

遵循安东尼奥的答案,对我的解决方案是:

First change the optimization setting:
string(REPLACE "/O2" "/Od" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
Than add a flag that creates program database file:
string(CONCAT CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" " /Zi")

这也有效,但清除了通话前设置为cmake_cxx_flags_release的所有内容。

SET(CMAKE_CXX_FLAGS_RELEASE "/Od /Zi")

对于Windows MSVC,我正在使用此标志:-dcmake_cxx_flags ="/od&quort。看起来这样:

cmake src -DCMAKE_CXX_FLAGS="/Od"

最新更新