通过cmake在visual studio中设置优化设置

时间:2016-12-21 14:13:44

标签: c++ visual-studio cmake

当我使用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-optimizations-o0-using-cmake

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

4 个答案:

答案 0 :(得分:1)

我使用此代码:

plt.imshow(imGray, cmap="gray")

答案 1 :(得分:1)

根据安东尼奥的回答,我的解决方案是:

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")

答案 2 :(得分:1)

更新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或更高版本。如果我们添加了一个与前一个选项冲突的编译选项,则以较新的选项为准。

答案 3 :(得分:0)

对于Windows MSVC,我正在使用以下标志:-DCMAKE_CXX_FLAGS =“ / Od”。 看起来像这样:

cmake src\ -DCMAKE_CXX_FLAGS="/Od"