Mar*_*man 11 c++ package-managers
我在一家公司工作,他们建立了一个由不同开发团队分别开发的组件分开的项目.用C++编写的所有内容.
他们使用了许多共同的库并管理所有这些库,他们创建了一个工具,以某种方式关联项目的版本和库的版本.
问题是市场上是否存在一些已经做到这一点的工具:
我的意思是,如果我去这个工具,我可以下载我们项目的4.0版本,它具有库1的版本4.5和库2的3.4版.如果我点击"下载",我将下载源代码整个(项目+库)项目(或二进制)项目和每个库的具体版本.
例如,如果我想下载公司中另一个开发人员的另一个项目,在不同的版本或平台中使用相同的库,我只需要选择它,并且将使用库1版本5.0和库2 2.5下载项目2,等等上.
在市场上是否有任何工具可以让我创建一些像这样的关系,顺便说一下,用代码仓库连接(在我们的例子中是gitlab)?
我检查了Gradle,柯南,......但他们建立,而不是管理组件之间的"关系".
像这样的东西:
CMake提供了足够的功能来在您的构建系统中创建这些类型的关系.不幸的是,您必须使用CMake管理所有项目的构建才能使其正常运行.CMake确实针对Visual Studio以及GCC,Clang和ICC.如果您感兴趣,请继续阅读.
示例依赖性
ExternalProject_Add(
Library1
GIT_REPOSITORY https://git@gitlab.yourdomain.com/repo/library_1.git
GIT_TAG tag_S.33.91
HTTP_USERNAME ciserv
HTTP_PASSWORD Obfusc@t3M3
CMAKE_ARGS
-DBUILD_EXAMPLES:BOOL=OFF
-DBUILD_TESTS:BOOL=OFF
-DBUILD_DOCS:BOOL=OFF
)
target_link_libraries(MyTarget PRIVATE Library1)
Run Code Online (Sandbox Code Playgroud)
ExternalProject模块中还有其他几个命令可用于在需要时进一步自定义依赖项.