我正在使用 conan 包管理器来安装我的项目依赖项。该项目只需要所有boost库的boost系统,因为我只使用asio和beast。
但是conan把boost的每一个部分都安装了,这是不可取的。如果我在mac机器上通过docker容器安装,需要一个多小时,conan缓存中的boost目录在任何平台上都超过1GB,比所有其他库加起来还要重十倍。
我只想安装 Boost.system,它通常应该很轻量级。有没有办法做到这一点?这是我的柯南文件的内容:
[requires]
boost/1.73.0 # here! I'd like something like "boost.system/1.73.0"
nlohmann_json/3.9.0
fmt/7.0.2
# other libs...
[generators]
cmake
[options]
nlohmann_json:implicit_conversions=False
Run Code Online (Sandbox Code Playgroud)
我需要 boost 1.73,我很快就会切换到需要 1.74。
在我的 CMake 中,我这样做:
target_link_libraries(my_app PRIVATE Boost::system)
Run Code Online (Sandbox Code Playgroud)
一切都在那里工作,但它仍然比它应该的重得多,并且它显着减慢了部署速度。
您正在寻找来自Conan Center Index 的Boost 1.73.0 ,这是 CCI 中可用的最新版本。然而,这个想法将使用组件而不是为每个模块创建一个新的配方。为什么?我们从 Bincrafters 了解到很难维护,一些修复可能会影响所有模块,复制需要更多的努力。因此,主要思想将消耗boost/1.73.0
,就像您拥有的一样,但只需要您需要的东西:
target_link_libraries(foobar boost::system)
目前,正在开发一个Pull Request以在 Boost 中提供组件。在 Bincrafters 方面,由于柯南中心指数的优势,模块化 Boost 更新停止。主要挑战之一是解决 Boost 模块之间的循环依赖问题,在 Bincrafters 中我们是“手动”完成的,但现在在 CCI 中我们使用的是 boost-dep,这会好得多。
所以如果你没有 boost.system 可用,你现在能做什么?使用选项,禁用您不想要的内容并从源代码构建。或者,用于find_library
仅列出 Boost.System
Update
:现在,Pull Request已合并到 CCI 中,并且所有 conan boost 版本都可以使用 boost 组件(从 开始1.69.0
)。
归档时间: |
|
查看次数: |
1871 次 |
最近记录: |