是否有可以管理版本依赖性的C++构建系统?

Nim*_*Nim 6 c++ build-process build

有一点背景,我们有一个相当大的代码库,它构建在一组库中 - 然后分发供各种二进制文件内部使用.目前,为此构建过程是随意的,一切都是从主干建立起来的.

我们想探讨是否有一个构建系统可以让我们管理版本并自动引入依赖关系.这样的工具适用于java,Maven.我喜欢它的包,存储库和依赖机制,我知道使用maven-native或maven-nar插件我们可以得到它.然而问题是我们无法将源树修复为"maven方式" - 不幸的是(至少maven-nar)插件似乎不喜欢没有这种结构的代码......

所以我的问题是,是否有一个满足以下C++的工具

  1. 建立
  2. 包(例如包含所有头的库,类似于.nar)
  3. 将包上传到"存储库"
  4. 自动从所述存储库中提取所需的依赖项,提取标题并包含在构建,提取库和链接中.依赖关系将在该二进制文件的"发行版"中描述 - 因此,如果我们使用CI服务器构建该"发布",则构建脚本将列出必要的依赖项(如pom.xml文件).

我可以通过修改make + shell脚本或使用额外的python模块waf/scons进行打包和依赖管理来自己动手 - 但是我会认为这是一个常见的问题,某个地方有人有这个工具吗?或者每个人都自己动手?或者我错过了waf/scons或CMake的重要功能?


编辑:我应该补充一点,OS是首选,非MS ...

Wes*_*ker 1

例如,大多数 Linux 发行版都包含其软件包的依赖性跟踪。在我试图自己拼凑起来解决你的问题的所有事情中,最终它们都“不太完美”。恕我直言,最好的办法是创建一个本地 yum/deb 存储库或其他东西(继续我的 Linux 示例),然后根据需要从那里提取内容。

许多源代码包还可以快速告诉您进行自构建(而不是安装二进制预编译包)必须安装的最少组件。

不幸的是,这些方法要容易得多,尽管比尝试自己做要好。最后,为了实现跨平台支持,每个操作系统还需要其中一个系统。乐趣!