c++ - 是否有可以管理发布依赖项的 C++ 构建系统?

标签 c++ build build-process

一点背景知识,我们有一个相当大的代码库,它构建在一组库中——然后分发给各种二进制文件供内部使用。目前,它的构建过程是随意的,一切都是在树干上构建的。

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

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

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

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


编辑:我应该补充一点,操作系统是首选,非 MS...

最佳答案

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

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

不幸的是,这些方法就那么简单,尽管它比自己动手要好。最后,要支持跨平台,每个操作系统都需要这些系统之一。有趣!

关于c++ - 是否有可以管理发布依赖项的 C++ 构建系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263051/

相关文章:

c++ - CImg 错误 : Failed to recognize format of file "xxx.png"

c++ - 关于消息处理系统的建议

build - 如何修复 "--asar does not take any arguments, it only has sub-properties"警告

build-process - 有没有适用于 SCons 的库/框架?

.net - 是否有适用于 Nexus 或 Artifactory 等 Java 工件存储库的 .NET 替代方案?你在哪里存储版本化的 DLL?

安装新的 C++ 重新分发包后,C++ 运行时行为异常

r - 为 R 构建 MXNET 库

eclipse - Maven Eclipse 插件安装

android构建源错误

c++ bool 连接 |=