【问题标题】:How do I do "Edit and Continue" builds with cmake projects in Visual Studio 2019?如何在 Visual Studio 2019 中使用 cmake 项目进行“编辑并继续”构建?
【发布时间】:2019-08-06 23:37:48
【问题描述】:

我想在我的 Visual Studio cmake C++ 项目中执行“编辑并继续”。 我知道我必须将 /Zi 更改为 /ZI,但是在哪里?

这是 C++

【问题讨论】:

    标签: c++ visual-studio cmake


    【解决方案1】:

    最简单的方法是在定义第一个目标之前插入以下命令:

    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 函数的更改。

    【讨论】:

    • 您如何仅对调试版本执行此操作?
    • 这会覆盖CMAKE_CXX_FLAGS_DEBUG的值,这可能不是预期的结果;要改为附加值,请执行 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /ZI")
    【解决方案2】:

    选项必须设置如下:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 2021-02-04
      相关资源
      最近更新 更多