当我使用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
没有成功。有人知道正确的方法吗?
答案 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"