跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如果 CI 系统只能获取到开源代码的源码包,是否应当使用 C++包管理器来管理内部项目的依赖呢?
未分類
31 8 月 2020

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

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

資深大佬 : zwy100e72 5

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

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

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

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

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

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

大佬有話說 (6)

  • 資深大佬 : nightwitch

    自带源码呗, 放 third_party 里面。需要升级的时候替换文件

  • 主 資深大佬 : zwy100e72

    @nightwitch 这种情况下还有别的限制。源码版本管理是 git,不太想直接带开源的源码,或者是二进制包,git 仓库的体积会变得很大,也可能会不小心改掉别人的源码;很多三方库不是用 cmake 管理的,还得给他们写 FindX.cmake 配置文件

  • 資深大佬 : secondwtq

    /r/cpp_questions 是什么地方 … /r/cpp 要活跃的多

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

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

    你这个如果依赖于包管理器的话,会不会造成 SDK 用户也必须使用包管理器,他们能不能接受呢

  • 主 資深大佬 : zwy100e72

    @secondwtq 按照我理解 /r/cpp 是用来发新闻 / 发 blog 的,所以没往那边发

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

    希望达成的效果是,用的话更方便,不用的话那么手动配置也不是不行。下游的开发者还是 Visual Studio 工程,这种情况他最差也就是手动配置下

  • 資深大佬 : shynome

    git submodule ?把第三方依赖的放到另外一个仓库里

  • 資深大佬 : waruqi

    可以用 xmake 支持 vcpkg conan clib brew 等包仓库,也有内置自建的官方包仓库,也支持用户自建的分布式仓库,以及私有仓库

    https://xmake.io/#/zh-cn/package/remote_package

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具