CMake 标志更改调试配置

Posted

技术标签:

【中文标题】CMake 标志更改调试配置【英文标题】:CMake flag changes debug configuration 【发布时间】:2014-04-25 16:31:45 【问题描述】:

我有一个在 CMake 2.8.9 上运行的项目,并使用 Visual Studio 2008 进行构建。在 CMakeLists.txt 中,我将调试配置的默认运行时库切换为 MTd:

set(CMAKE_CXX_FLAGS_DEBUG "/MTd")

不幸的是,这一行还导致将标志“调试信息格式”切换为“禁用”,这意味着我无法调试我的项目。 :-(

如果我从 CMakeLists.txt 中删除该行,则运行时库为“MDd”,“调试信息格式”为“程序数据库 (/Zi)”。有谁知道原因或如何避免这个问题?有什么解决方法吗?是否可以通过 CMake 设置缺少的标志?

【问题讨论】:

也许是因为你设置这个时另一个标志被删除了? CMAKE_CXX_FLAGS_DEBUG 在设置之前包含什么?您可以使用message("Flag: $CMAKE_CXX_FLAGS_DEBUG") 显示它。 【参考方案1】:

您可能只想添加该标志到已用标志列表中,而不是替换单个标记/MTd的标志列表。

要将/MTd 附加到标志列表中,请使用

set(CMAKE_CXX_FLAGS_DEBUG "$CMAKE_CXX_FLAGS_DEBUG /MTd")

【讨论】:

就是这样。谢谢。

以上是关于CMake 标志更改调试配置的主要内容,如果未能解决你的问题,请参考以下文章

在 CMake 中为多个配置混合构建标志

CMake:配置期间不同的编译器标志?

CMAKE 包配置和标志设置

使用 CMake 编译 openCV:设置架构和优化标志

如何查看CMake使用哪些gcc选项?

可以在运行/调试配置中使用 CLion 宏吗?