长话短说:项目现在使用 CMake,第三方库也同样是 CMake 的,目前在 CMakeList.txt 中使用 FetchContent 从 Github 上拉取源码后add_subdirectory来安装依赖。暂时一切 OK,只是 Github 连接不畅,每次要浪费长一点的时间安装依赖。直到今天尝试上了 CI,每次运行 CI 都要重新拉依赖,而且还要拉两次(因为有 amd64 和 arm 两个架构),就将这个问题放大了。
可能的解决途径:
-
提前编译依赖成 so,安装库到系统中
因为最终软件是要部署在嵌入式设备上的,这么做太繁琐,个人更偏向于使用第三方库的源码在编译时与程序一起静态编译。
-
继续目前的配置,在代理 /反代 Github
是个办法,但是感觉不是很好,有点野路子的感觉。而且 CI 在容器里不太好代理
-
将相关依赖的编译结果缓存
这是目前个人觉得最靠谱的办法,而且 Travis CI 的文档也是建议将依赖安装的部分提取出来(
make get-deps)。但是在 CMake 里好像不太好做到?而且依赖编译完也不是像 node 在一个独立的目录中,不太好设置缓存。
研究了一下午焦头烂额,只得向大家求救了!
(以前使用其他语言的时候,一句composer install或者npm install就解决了的事情,没想到在 C++这竟如此复杂,要是有类似的工具能统一起来多好)
