如何使用CMake一次构建多个配置?

如何使用CMake一次构建多个配置?,cmake,Cmake,例如,我应该如何同时构建发布和调试版本?我猜答案是利用缓存变量和它们的某种“集合”。 这是从缓存参数获取配置参数的常用方法,不是吗?如果答案是肯定的,我应该如何以最佳方式使用它们的几个“集合”? 非常感谢 您没有指定所谈论的平台。基于Makefiles的生成器一次只构建一个配置,构建多个配置的正常方法是使用单独的构建树,例如,一个用于英特尔64位Linux,一个用于32位Windows等。大多数CMake项目建议进行源代码外构建,假设您正确地编写了CMakeLists文件,您可以拥有~/src/

例如,我应该如何同时构建发布和调试版本?我猜答案是利用缓存变量和它们的某种“集合”。 这是从缓存参数获取配置参数的常用方法,不是吗?如果答案是肯定的,我应该如何以最佳方式使用它们的几个“集合”?
非常感谢

您没有指定所谈论的平台。基于Makefiles的生成器一次只构建一个配置,构建多个配置的正常方法是使用单独的构建树,例如,一个用于英特尔64位Linux,一个用于32位Windows等。大多数CMake项目建议进行源代码外构建,假设您正确地编写了CMakeLists文件,您可以拥有~/src/YourProject和~/build/YourProject发行版、~/build/YourProject调试

假设您的源代码树中没有任何CMakeCache.txt等,这是建议的方法。然后,您可以在Debug目录中运行cmake-DCMAKE\u BUILD\u TYPE:STRING=Debug~/src/YourProject,以及类似的版本。这样做的好处是,您可以将依赖项目指向适当的配置

Boost CMake项目还探索了在同一构建树中构建所有配置,使用库名称混乱来区分。如果您必须在同一构建树中构建所有配置,那么这可能值得一看

小心不要混淆生成类型和生成配置

如果您真正的意思是“构建类型”,如调试和发布,并且希望同时构建它们,那么Cmake FAQ给出了一个答案:


基本上,它涉及到使用几个源代码外版本。

在“版本类型”和“版本配置”之间有什么区别?“类型”即“模式”和“配置”基本上是为不同的工具创建调试和发布版本的方法。配置仅对支持它的工具可用,例如VisualStudio。模式通常也用于调试和发布样式的编译,但cmake在单独的构建文件夹中为make实现它们,因为make没有与VS相同的配置支持样式,即从GUI中的配置下拉列表中选择构建类型/配置。