【问题标题】:How to manage multiple build target configurations with cmake如何使用 cmake 管理多个构建目标配置
【发布时间】:2019-12-26 02:59:41
【问题描述】:

我正在思考如何设计一个新的项目构建系统。
我想使用 CMake 为 Windows 和 Linux 编译。我想要发布和调试版本,这非常简单。

问题是我希望在接下来的几年中为多个硬件项目部署这个软件。这意味着我将有预处理器定义来打开/关闭和/或更改我的 C++ 程序中的功能。大部分代码将保持不变。我还想链接配置特定的库。当前的遗留项目使用带有定义列表的标题,然后链接所有可能的项目依赖项。

一个示例配置头:

// projects.h

//#define project1
//#define project2
#define project3

这意味着要更改硬件/项目配置,您必须编辑此文件以确保选择了正确的硬件配置。
我想要做的是为每个项目配置一个配置,也可以配置为发布或调试构建。

对于如何在 CMake 中更优化地处理这个问题有什么建议吗?

【问题讨论】:

  • #cmakedefine 是否适合您?这样你就可以告诉 CMake 你想要构建哪个项目配置,它会相应地定义常量。

标签: c++ cmake


【解决方案1】:

我会尽量让它尽可能简单。

如果您现在使用 CMake,您可以立即使用机器来确定您在哪个平台上运行。您可以使用它来设置条件构建标志和预处理器定义来驱动构建过程的其余部分。

如果您从 CMake 中成长,但仍想留在元构建系统的世界中,您可以关注 Waf,它比 CMake 更模块化,并且是用 Python 编写的,并且具有声明式和命令式语法,所以一种未来的证明。

【讨论】:

  • 在原来的问题中,没有什么是 CMake 做不到的。 Waf 并不普遍,我会坚持使用广泛使用的东西。
  • @jcm - 如果出于某种原因 CMake 不适合,我只建议将其作为后备。根据我的经验,CMake 可能过于稳固/固执己见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
相关资源
最近更新 更多