【问题标题】:Cmake: only one configuration for a specific sub project, Debug&Release for all othersCmake:特定子项目只有一个配置,所有其他的调试和发布
【发布时间】:2020-09-07 03:36:43
【问题描述】:

在我的根文件夹的 CMakeLists.txt 中,我已将可能的配置定义为 Debug 和 Release:

if(NOT CMAKE_CONFIGURATION_TYPES)
  set(CMAKE_CONFIGURATION_TYPES Debug Release)
  set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "Reset the configurations to what we need" FORCE)
endif()

这适用于解决方案的大多数子项目。但是,我有两个不区分 Debug 和 Release 的子项目(它们做一些非 C++ 的东西,比如 Doxygen 或 Typescript 编译)。在我刚刚写的这些子项目的 CmakeLists.txt 中

project(typescript_compilation)

# Do not separate debug and release builds
set(CMAKE_CONFIGURATION_TYPES Release)

如果首先在 IDE (Visual Studio) 中打开 Release 配置,然后打开 Debug 配置,这将有效。然后我可以在 Release 和 Debug 之间切换,项目可用并且只构建一次。

但是,如果在Cmake生成后先打开Debug配置,则无法加载子项目并报错

typescript_compilation.vcxproj:错误:无法加载项目:项目不包含请求的配置 Debug|x64。请验证 .sln 文件是否有效且仅使用现有项目配置。

所以我的方式似乎是实现这一目标的错误方式,并且调试模式仅在发布模式已打开并首先构建时才有效。只构建一次项目的最佳 Cmake 方法是什么?

【问题讨论】:

  • 似乎是一个难题:-D 已经发布了第二个回合

标签: visual-studio cmake


【解决方案1】:

您的 IDE 似乎找不到这些子项目的 Debug 配置。 我想,像你对根配置所做的那样设置配置类型应该可以解决问题:

set(CMAKE_CONFIGURATION_TYPES Debug Release)

【讨论】:

  • 不,这确实有效。我的目标是在调试模式和发布模式下构建一些项目 - 这可以按预期工作。此外,我希望一些项目只构建一次(并在调试和发布模式下共享结果) - 这不起作用,这就是这个问题的意义
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 2012-01-10
  • 2018-03-16
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多