【问题标题】:How to turn off a project for Debug config in CMake-generated Visual Studio solution如何在 CMake 生成的 Visual Studio 解决方案中关闭调试配置项目
【发布时间】:2016-12-28 12:58:34
【问题描述】:

右键单击Solution Explorer 窗口中的解决方案标题,然后转到Configuration Properties -> Configuration。表格出现,显示复选框,允许关闭/打开特定项目的特定配置的构建。

我的解决方案和项目是使用 CMake 生成的。

是否可以从 CMakeLists.txt 为调试构建配置关闭特定项目?

==

问题的背景是无​​法为调试配置构建 Cython 项目。 发布构建良好。 CMake 模块取自 Github 上的 this example

调试配置需要调试 Python 库python27_d.lib,即forced by pyconfig.h。我使用 Anaconda python,它缺少这个库。

此外,我不需要该项目的调试版本。我花了几个小时没有成功,以各种方式修改CMakeLists.txt,试图从编译器命令行中删除_DEBUG 宏的定义。 CLI 参数/D_DEBUG 在所有带有属性和“完整命令行”列表的对话框中都没有,Visual Studio 向我展示了这些。然而,它总是附加一些东西。

所以,我想暂时在 Debug 构建中禁用这个项目。

【问题讨论】:

  • 您是否尝试过将目标的EXCLUDE_FROM_DEFAULT_BUILD_DEBUG 属性设置为1?请注意 EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG> 是随 CMake 版本 2.8.11 添加的(并且不适用于旧版本)。
  • 没听说过,会试试

标签: visual-studio cmake cython


【解决方案1】:

这会将问题第一部分的复选框设置为未选中状态:

set_property(TARGET <my Cython module>
             PROPERTY EXCLUDE_FROM_DEFAULT_BUILD_DEBUG TRUE)

现在我想知道,编译器命令行是从哪里来的,因为 /D_DEBUG 在所有带有属性的对话框中都不存在,Visual Studio 已经向我展示了(问题的第二部分)。

我正在 VS2013 中构建这个项目。最初,该字符串 /D_DEBUG 存在于项目属性 -> C/C++ -> 预处理器 -> 调试配置的预处理器定义中。然后我添加了

string(REPLACE "/D_DEBUG" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")

到我的 CMakeLists.txt 文件,构建 Cython 代码,该宏已从项目属性中消失。

尽管如此,该项目仍然需要python27_d.dll

我也加了

#define _DEBUG

在其中一个文件中,并收到以下编译器警告

C:\projects\project\file.cpp(9): warning C4005: '_DEBUG' : macro redefinition
          command-line arguments :  see previous definition of '_DEBUG'

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多