我最近开始使用跨平台构建系统(按需生成 make 文件、Visual Studio 解决方案/项目等)建立自己的库和项目,我遇到了一个可能已经解决的问题。
我遇到的问题是:当一个应用程序有一个依赖项也有依赖项时,被链接的应用程序必须链接依赖项及其所有子依赖项。这以递归方式进行,例如
(为了争论,假设我们只处理静态库。)
- TopLevelApp.exe
- 依赖关系_A
- 依赖_A-1
- 依赖_A-2
- 依赖_B
- 依赖_B-1
- 依赖性_B-2
- 依赖关系_A
所以在这个例子中,TopLevelApp 将需要链接dependency_A、dependency_A-1、dependency_A-2 等,B 也是如此。我认为在目标应用程序中手动记住所有这些的责任是非常次优的。还有一个问题是确保所有目标都使用相同版本的依赖项(假设某些目标依赖于相同的东西,例如 boost)。
现在需要链接所有的库,并且没有办法绕过它。我正在寻找的是一个为你管理这个的构建系统。因此,您所要做的就是指定您依赖某些东西,并且该库的适当依赖项将自动被拉入。
我一直在研究的构建系统是 premake premake4,它不能处理这个问题(据我所知)。有谁知道可以处理此问题的构建系统?如果没有,那为什么不呢?