【问题标题】:How to manage dependencies in c++如何在 C++ 中管理依赖项
【发布时间】:2013-12-16 11:18:14
【问题描述】:

我有一个很大的存储库,其中包含许多单独的模块(可执行文件和 so 文件),其中一些依赖于另一个模块(并且依赖于不在存储库中的第三方库)。

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

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

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

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

    问题:

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

这对我来说似乎是最好的解决方案,但我不明白如何实际去做。

我看到了适用于 c# windows 开发人员的 nuget(还有一些小 c++,但仅限于 windows)和适用于 java 开发人员的 ivy / maven,但找不到任何可以处理 c++ 的工具。

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

【问题讨论】:

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


    【解决方案1】:

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

    我怀疑您还想要一些更复杂的东西,这与您的构建设置方式有关。这与 c++ 关系不大。如果您想要一个更好的答案,请更明确地了解您的构建设置。

    【讨论】:

      【解决方案2】:

      maven nar (Native Archive) plugin 可以帮助您。它是 maven 的一个插件,可让您在平台上构建本机档案。然后,您也可以对 c/c++ 依赖项使用标准 maven 依赖项功能。

      【讨论】:

      • 在没有 maven 的情况下有什么理由吗?我目前正在使用 scons 作为构建系统。
      猜你喜欢
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2016-03-03
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多