如何在c ++中管理依赖项

时间:2013-11-30 11:27:16

标签: c++ maven version-control build ivy

我有一个包含大量独立模块(可执行文件等)的大型存储库,有些依赖于另一个模块(并且依赖于不在repo中的第三方库)。

我希望能够在此存储库中仅提取一个模块,并且能够独立构建它。

btw - 我在Linux和Windows环境中使用scons作为构建工具。

我在这个网站(以及更多)中看到,有两种方法可以解决这个问题:

  1. 在每个模块存储库中创建目录“dependency”或任何类似的名称,并将此模块所依赖的所有存储库设置为此目录中的子存储库。

    问题:

    1. 它无法解决我的SCM中无法处理的第三方问题。
    2. 它使构建过程更加缓慢
    3. 它的丑陋,在我的基础项目目录中有很多倍。
  2. 创建“二进制存储库”或“构建工件存储库”并使用它来管理依赖关系。

  3. 对我来说这看起来是最好的解决方案,但我不明白如何做到这一点。

    我看到了c#windows开发人员的nuget(还有很少的c ++,但仅限于windows)和java开发者的ivy / maven,但是找不到任何可以为c ++处理它的工具。

    我的问题是 - 如何使用c ++代码创建依赖关系管理?

2 个答案:

答案 0 :(得分:0)

C ++中的依赖关系通过头文件和转发声明来管理。 通常,您应该尽可能地使用前向声明,并且在无法解决时包含头文件。这通常会给您带来好处,只要您不更改类的接口,重新编译应该只触及单个目标文件。

我怀疑你也想要一些更复杂的东西,与你的构建方式有关。这与c ++几乎没什么关系。如果您想要更好的答案,请更明确地了解您的构建设置。

答案 1 :(得分:0)

maven nar (Native Archive) plugin可以帮助您解决此问题。它是maven的一个插件,允许您在平台上构建本机存档。然后,您还可以将标准maven依赖项功能用于c / c ++依赖项。