如何使用CMake同时构建多个配置?

13

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

2个回答

16

您没有明确指定您所讨论的平台。基于Makefiles的生成器一次只能构建一个配置,构建多个配置的常规方法是使用单独的构建目录,例如针对64位Linux上的Intel的一个,针对32位Windows的一个等等。大多数CMake项目建议在源代码目录之外进行构建,并且假设您正确编写了CMakeLists文件,则可以拥有~/src/YourProject和~/build/YourProject-Release、~/build/YourProject-Debug。

这是推荐的方法,假设您的源代码树中没有任何CMakeCache.txt等文件。然后,您可以在调试目录中运行cmake -DCMAKE_BUILD_TYPE:STRING=Debug ~/src/YourProject,并在发布版本中类似地操作。这样做的好处是您可以将依赖项项目指向适当的配置。

Boost CMake项目还尝试使用库名称改名来区分,在同一个构建目录中构建所有配置。如果您必须在同一个构建目录中构建所有配置,则可以考虑这种方法。


9
(给谷歌用户)请注意不要混淆“构建类型”和“构建配置”。
如果您真的是指像“debug”和“release”这样的“构建类型”,并且想同时构建它们,那么Cmake FAQ提供了一个答案:如何在不切换的情况下构建多种模式 基本上涉及使用几个源外构建。

7
“Build type”和“build configuration”的区别是什么? - Kyle Strand
3
“类型”(也称为“模式”)和“配置”基本上是创建不同工具的调试和发布版本的方式。只有支持它的工具才能使用配置,例如Visual Studio。模式通常用于调试和发布样式的编译,但cmake将它们实现为在单独的构建文件夹中进行make编译,因为make没有与VS相同的配置支持样式,即从GUI中的配置下拉列表中选择构建类型/配置。 - gnac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接