我应该如何向开发人员提供库二进制文件?

时间:2014-03-24 00:03:21

标签: c++ github dependencies cross-platform binaries

我希望其他人能够轻松地在我的存储库上工作。但是,由于某些已编译的依赖项大小超过100mb,因此我无法将它们包含在存储库中。 Github拒绝这些文件。

处理大型依赖项二进制文件的最佳方法是什么?在Windows下构建源代码库并不容易,需要数小时。我不希望每个开发人员都在努力解决这个问题。

1 个答案:

答案 0 :(得分:1)

我最近一直在使用Ivy(http://ant.apache.org/ivy/)和C ++二进制文件。基本思想是为每个构建组合构建二进制文件。然后,您将每个构建组合压缩到一个名为mypackage-windows-vs12-x86-debug.zip的文件中。在您的ivy.xml中,您将每个zip文件与一个配置相关联(例如:windows-vs12-x86-debug)。然后,您将此多个zip文件包发布到Ivy仓库。您可以自己托管回购,也可以尝试上传到现有的常春藤回购。您将为每个依赖项创建一个zip文件包,ivy.xml文件将描述所有包中的依赖关系链。

然后,您的开发人员必须设置常春藤。在他们的ivy.xml文件中,他们会将您的包列为依赖项,以及它们所需的配置(例如:windows-vs12-x86-debug)。他们还需要在构建中添加常春藤解析/检索步骤。 Ivy将下载您的软件包的zip文件以及您的软件包所依赖的所有内容。然后他们需要设置解压缩& amp;在他们的构建中移动任务以提取您提供的二进制文件,并将它们放在构建期望的位置。

Ivy是一个很酷的工具,但它绝对是简化Java而不是C ++。当它全部设置完毕时,它非常棒。但是,根据我作为一个根本不熟悉DevOps的人的经验,将它集成到C ++构建中一直是一个挑战。我发现创建执行所需常春藤操作的简单ant任务是最简单的,然后使用我的“常规”构建系统(make)在需要时调用这些ant任务。

所以我还应该提一下,我使用Ivy的原因是我在企业环境中实现这一点,我无法更改系统文件。如果您和您的开发人员可以做到这一点,那么使用RPM / APT系统可能会更好。您将设置一个repo并让您的开发人员将您的repo添加到相应的RPM / APT配置文件中。然后他们将运行像sudo apt-get install mypackage这样的命令,apt-get将完成在正确的位置下载和安装正确文件的所有工作。我不知道这在Windows上是如何工作的,也许有人创建了一个Windows RPM / APT客户端。