C++;基于CMake的项目:如何一次批量构建所有配置和类型? 基于C++CMake的项目:如何一次批量生成所有配置和类型?

C++;基于CMake的项目:如何一次批量构建所有配置和类型? 基于C++CMake的项目:如何一次批量生成所有配置和类型?,c++,visual-studio,cmake,cross-compiling,C++,Visual Studio,Cmake,Cross Compiling,在跨平台、跨编译器、基于CMake的项目上工作时, 我应该选择哪种有效的方法来同时针对所有生成配置和生成类型测试我的更改? 这里的目标是避免在所有配置之间手动切换,这非常耗时 上下文 使用Ms Visual Studio,我有一个针对许多编译器和平台的大型代码库。 非Windows配置使用MSV跨平台系统,以WSL和Dockers容器 例如,这里有一些-main-configuration,其他的使用特定的自定义编译选项 Windows-x64-Debug Windows-x64-Releas

在跨平台、跨编译器、基于CMake的项目上工作时,
我应该选择哪种有效的方法来同时针对所有生成配置和生成类型测试我的更改?
这里的目标是避免在所有配置之间手动切换,这非常耗时

上下文 使用Ms Visual Studio,我有一个针对许多编译器和平台的大型代码库。
非Windows配置使用
MSV
跨平台系统,以
WSL
Dockers
容器

例如,这里有一些-main-configuration,其他的使用特定的自定义编译选项

  • Windows-x64-Debug
  • Windows-x64-Release
  • Winndows-x64-ClangCL-Debug
  • Winndows-x64-ClangCL-Release
  • Linux-clanglibc++-Debug
  • LinuxClanglibc++-发行版
  • Linux-clanglibstdc++-Debug
  • Linux Clang libstdc++-发行版
  • Linux GCC调试
  • Linux GCC发行版
仅供参考,从事此项目的团队开始创建各种CI检查,以避免拉取请求中出现任何非编译代码。
然而,这里的想法是在开发人员提交编译之前,找到一种一次性批量测试编译的方法


请注意,不要使用基于CMake的项目。

如果每个配置都有docker映像,则可以一次运行所有这些映像。如果您拥有具有多个CPU和足够RAM的强大机器,这是有意义的。CMake本身没有任何内置功能,如“在每个配置中构建所有内容”。当您编写CI时,让它运行批处理/bash/powershell/python脚本,然后您可以在本地运行相同的脚本yourself@pptaszni不完全适用于每种配置。一些适用于多个配置(例如,我有一个带有Clang和GCC的Fedora,以及14.04到20.04版本的Ubuntu-s),其他的适用于一些特定的、非平凡的操作系统和/或工具链。另外,一些构建容器与其他用户共享,具有较大的配额,一些可以在本地运行。这里的理想解决方案是找到或创建一种方便的方法,一次批量构建大多数(如果不是全部)配置。