【问题标题】:Setting optimization settings in visual studio through cmake通过 cmake 在 Visual Studio 中设置优化设置
【发布时间】:2016-12-21 14:13:44
【问题描述】:

当我使用 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

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

【问题讨论】:

  • 在 Stack Overflow 上,我们倾向于将问题发布和解决方案分开。而不是添加SOLVED 子句,you may post answer on your own question。此功能非常适合您的情况:请使用它。
  • 很高兴知道这一点。它的固定!

标签: c++ visual-studio cmake


【解决方案1】:

我使用这个代码:

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

【讨论】:

    【解决方案2】:

    按照安东尼奥的回答,我的解决方案是:

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

    【讨论】:

      【解决方案3】:

      更新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 及更高版本拥有它。如果我们添加一个与前一个选项冲突的编译选项,新的选项将优先。

      【讨论】:

        【解决方案4】:

        对于Windows MSVC,我使用这个标志:-DCMAKE_CXX_FLAGS="/Od"。 看起来像这样:

        cmake src\ -DCMAKE_CXX_FLAGS="/Od"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-09
          相关资源
          最近更新 更多