【发布时间】: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