如何在C++中管理依赖关系

3
我有一个包含许多独立模块(可执行和.so文件)的大型存储库,其中一些依赖于其他模块(并且依赖于第三方库,这些库不在存储库中)。
我希望能够仅拉取此存储库中的一个模块,并能够独立构建它。
顺便说一句 - 我在Linux和Windows环境中使用scons作为构建工具。
我在此网站(以及更多网站)上看到此问题有两种解决方法:
1. 在每个模块存储库中创建名为“dependency”或任何类似名称的目录,并将所有此模块依赖的存储库设置为此目录中的子存储库。
问题: - 它不能解决我SCM中未处理的第三方问题。 - 它使构建过程变得非常缓慢 - 它很丑陋,在我的基础项目目录中有许多重复项。
2. 创建“二进制存储库”或“构建工件存储库”并使用其管理依赖项。
这看起来像是我最好的解决方案,但我不知道如何实际操作。
我看到了C# Windows开发人员使用NuGet(以及少量C++但仅限于Windows),Java开发人员使用Ivy / Maven,但找不到任何工具可以处理C++。
我的问题是 - 如何使用C++代码创建依赖项管理?
2个回答

0

C++中的依赖关系是通过头文件和前向声明来管理的。 通常情况下,您应该尽可能使用前向声明,并在无法避免时包含头文件。这通常会使您受益,只要不更改类的接口,重新编译就只会触及单个对象文件。

我怀疑您也想要更复杂的东西,与您的构建设置有关。这与C++几乎没有任何关系。如果您想获得更好的答案,请明确说明您的构建设置。


0

Maven nar(Native Archive)插件可以帮助您完成此操作。它是一个Maven插件,可让您在平台上构建本地归档文件。然后,您还可以使用标准的Maven依赖项功能来处理C/C++依赖项。


有没有不使用Maven的方法?我目前正在使用Scons作为构建系统。 - dotannn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接