c++ - CMake:如何禁用单个 *.cpp 文件的优化?

标签 c++ windows visual-studio cmake

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

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -O0)

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

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

或者是否有任何其他方式告诉 CMake 这个文件根本不应该被优化?

最佳答案

谢谢齐瓦列夫!

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

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

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

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -Od)

并将其放置在 cmake 文件中,其中 add_library() 调用是针对该 *.cpp 文件的。

关于c++ - CMake:如何禁用单个 *.cpp 文件的优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33540578/

相关文章:

c# - 避免在HashSet <double>中重复以获取略有不同的值

c++ - 优化循环 C++

windows - 在 Windows 上使用 osm2pgsql default.style 文件

c++ - 如何修改预构建的字符串

c++ - 如何从C :\Windows\winsxs?中删除一个文件夹

c - 无法读取 C 中的某些注册表项

c++ - 如何解决Windows上的编译错误C2079

C++ 和网络套接字

c++ - exe中 Unresolved external symbol 错误,但dll中没有

c++ - 按下按钮时Qt鼠标离开事件