V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zwy100e72
V2EX  ›  C++

如果 CI 系统只能获取到开源代码的源码包,是否应当使用 C++包管理器来管理内部项目的依赖呢?

  •  
  •   zwy100e72 ·
    zhaoweny · 2020-09-12 19:57:23 +08:00 · 2219 次点击
    这是一个创建于 1531 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在开发一个内部的 C++ SDK,该 SDK 依赖于一些开源项目。我目前使用 conan 作为包管理器,从 conan center 下载二进制包并配置 CMake 的find_package。但是公司的 CI 系统无法访问公网,只能访问内部站点上托管的开源项目的源码。

    我想把 SDK 和依赖打包到一起以二进制形式发布,因此必须从当前配置( conan 从 conan center 下载二进制包)迁移到一种 CI 系统也能使用的方法上。我想我有这么几种选项:

    • 直接使用脚本下载需要的源码包,然后编写脚本和 CMake 配置文件来编译 SDK 和 SDK 的依赖
    • 内嵌一个包管理器,给包管理器编写脚本,用包管理器来管理构建中的依赖关系
    • 更进一步,将包管理器分发给下游开发者,为他们自动配置 SDK 的依赖关系

    所以问题来了:到底要不要用包管理器,如果用的话,vcpkgconan 该怎么选? 我两种包管理器都用过一段时间。

    PS:这个 SDK 是用 cmake + visual studio 来编译的;不过后续可能要做跨平台到 Android 和 iOS 上面去

    (本问题英文版本是我本人发布于 Reddit 的,中文版本也是我自己编写的。)

    6 条回复    2020-09-13 13:48:43 +08:00
    nightwitch
        1
    nightwitch  
       2020-09-12 20:05:35 +08:00
    自带源码呗, 放 third_party 里面。需要升级的时候替换文件
    zwy100e72
        2
    zwy100e72  
    OP
       2020-09-12 21:27:38 +08:00
    @nightwitch 这种情况下还有别的限制。源码版本管理是 git,不太想直接带开源的源码,或者是二进制包,git 仓库的体积会变得很大,也可能会不小心改掉别人的源码;很多三方库不是用 cmake 管理的,还得给他们写 FindX.cmake 配置文件
    secondwtq
        3
    secondwtq  
       2020-09-12 21:42:12 +08:00
    /r/cpp_questions 是什么地方 ... /r/cpp 要活跃的多

    我想了一下我们这边的依赖是把 binary 统一放在一个文件服务器里面( binary 来源不明),所有其他服务器都能访问该文件服务器,然后每个版本都写死依赖版本的。

    分发的时候直接写 CMake 把所有依赖的库全都拷一遍。不过这个项目是直接可执行的软件,不是 SDK 。

    你这个如果依赖于包管理器的话,会不会造成 SDK 用户也必须使用包管理器,他们能不能接受呢
    zwy100e72
        4
    zwy100e72  
    OP
       2020-09-12 22:01:03 +08:00
    @secondwtq 按照我理解 /r/cpp 是用来发新闻 / 发 blog 的,所以没往那边发

    > 会不会造成 SDK 用户也必须使用包管理器

    希望达成的效果是,用的话更方便,不用的话那么手动配置也不是不行。下游的开发者还是 Visual Studio 工程,这种情况他最差也就是手动配置下
    shynome
        5
    shynome  
       2020-09-12 22:05:49 +08:00 via Android
    git submodule ?把第三方依赖的放到另外一个仓库里
    waruqi
        6
    waruqi  
       2020-09-13 13:48:43 +08:00 via Android
    可以用 xmake 支持 vcpkg conan clib brew 等包仓库,也有内置自建的官方包仓库,也支持用户自建的分布式仓库,以及私有仓库

    https://xmake.io/#/zh-cn/package/remote_package
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2611 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:34 · PVG 23:34 · LAX 07:34 · JFK 10:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.