【问题标题】:CMake: how to disable optimization of a single *.cpp file?CMake:如何禁用单个 *.cpp 文件的优化?
【发布时间】:2015-11-05 09:17:30
【问题描述】:

我想在我的 CMake 项目中禁用单个 *.cpp 文件的优化。我发现 CMake 提供了以下功能来实现这一点:

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -O0)

但是,这似乎对我不起作用。我生成了一个 Visual Studio 2013 项目,每当我更改为“Release”或“RelWithDebInfo”时,它仍然会完全优化该文件,如属性下所示。

上面的命令放在哪里重要吗?我有多个 cmake 文件分布在整个项目中。我将上面的命令直接放在 cmake 文件中,其中 *.cpp 文件被添加到项目中。

或者有没有其他方法告诉 CMake 这个文件根本不应该得到优化?

【问题讨论】:

  • 它应该可以工作。该命令应该放在同一个 cmake 文件中,其中调用了 add_executable() / add_library()。另请参阅set_source_files_properties 的文档
  • 这会将 -O0 附加到编译选项中,但如果编译是发布版,您最终不会在命令行上同时出现 -O0 和 -O3 吗?

标签: c++ windows visual-studio cmake


【解决方案1】:

感谢齐瓦列夫!

确实,我必须将命令放在包含相应 add_library() 的 cmake 文件中才能使其工作。

但除此之外,我还必须应用一个小改动:Visual Studio 需要 -Od(而不是 -O0)来禁用优化。

因此,Visual Studio 构建的最终命令如下所示:

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -Od)

并将其放在 cmake 文件中,其中 add_library() 调用用于该 *.cpp 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2017-04-28
    • 2021-09-15
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多