【发布时间】:2019-08-06 23:37:48
【问题描述】:
我想在我的 Visual Studio cmake C++ 项目中执行“编辑并继续”。 我知道我必须将 /Zi 更改为 /ZI,但是在哪里?
这是 C++
【问题讨论】:
标签: c++ visual-studio cmake
我想在我的 Visual Studio cmake C++ 项目中执行“编辑并继续”。 我知道我必须将 /Zi 更改为 /ZI,但是在哪里?
这是 C++
【问题讨论】:
标签: c++ visual-studio cmake
最简单的方法是在定义第一个目标之前插入以下命令:
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(CMAKE_CXX_FLAGS_DEBUG "/ZI")
set(CMAKE_SHARED_LINKER_FLAGS "/SAFESEH:NO")
set(CMAKE_EXE_LINKER_FLAGS "/SAFESEH:NO")
endif()
如果您希望为特定目标设置选项,请使用
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
target_compile_options(${PROJECT_NAME} PRIVATE "/ZI")
target_link_options(${PROJECT_NAME} PRIVATE "/SAFESEH:NO")
endif()
警告:截至撰写本文时 Visual Studio 的最新版本 (16.4.2),Visual Studio 无法处理对 lambda 函数的更改。
【讨论】:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /ZI")
选项必须设置如下:
CMAKE_C_FLAGS_DEBUG: /MDd /ZI /Ob0 /Od /RTC1
CMAKE_CXX_FLAGS_DEBUG: /MDd /ZI /Ob0 /Od /RTC1
CMAKE_EXE_LINKER_FLAGS_DEBUG: /debug /INCREMENTAL /LTCG:OFF
CMAKE_MODULE_LINKER_FLAGS_DEBUG: /debug /INCREMENTAL /LTCG:OFF
CMAKE_SHARED_LINKER_FLAGS_DEBUG: /debug /INCREMENTAL /LTCG:OFF
【讨论】: