cmake - 如何使多配置生成器在使用 ExternalProjects 的项目中表现得像单配置生成器?

标签 cmake external-project

我正在使用 CMake 构建跨平台(例如 Linux/Windows)应用程序,该应用程序还使用第三方库作为外部项目。

我知道 MSVC 是一个多配置环境,因此 不使用 CMAKE_BUILD_TYPE,而是使用 CMAKE_CONFIGURATION_TYPES 集来构建所有可能的配置。

我也知道这样一个事实,我需要提供构建类型的配置(cmake --build . --config Release),而不是提供配置类型的配置(例如 cmake -DCMAKE_BUILD_TYPE ..)

参见 https://stackoverflow.com/questions/24460486/cmake-build-type-not-being-used-in-cmakelists-txt]

我完全不明白的是:

我不想要多配置构建。我想构建或者调试或者发布-但在生成的构建系统中只有其中之一。我可以使用 CMake + 多配置生成器(如 MSVC 或 Ninja Multi-Config)+ ExternalProject 项目来实现吗?如果是,如何?

最佳答案

您应该能够通过在命令行 (with the -D argument format) 中将 CMAKE_CONFIGURATION_TYPES 设置为单个条目列表来实现此目的,例如“-DCMAKE_CONFIGURATION_TYPES=Debug "或 "-DCMAKE_CONFIGURATION_TYPES=Release"当您配置构建系统,并配置对 ExternalProject_Add 的调用时使用 CMake 的外部项目也将 CMAKE_CONFIGURATION_TYPES 的值传递给外部项目,例如:

ExternalProject_Add(
  # ...
  CMAKE_CACHE_ARGS
    "-DCMAKE_CONFIGURATION_TYPES:STRING=${CMAKE_CONFIGURATION_TYPES}"
  # ...
)

关于cmake - 如何使多配置生成器在使用 ExternalProjects 的项目中表现得像单配置生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44857958/

相关文章:

c++ - 将导入的库链接到 CMake ExternalProject

windows - CMake 安装不在 Windows 上安装库

build - 如何从 cmake 中的列表中删除标记?

c++ - CMake 链接不是子文件夹

c++ - 错误 : execution of make failed

CMake:如何构建外部项目并包含其目标

shell - 使用 shell 命令作为 INSTALL_COMMAND 到 ExternalProject_Add

windows - ExternalProject_Add 何时构建?

cmake - 如何在 externalproject_add 中设置命令参数

c++ - CMake 无法识别混合 C++/FORTRAN 程序中的 FORTRAN 源代码