C++目前非常强的包管理器:vcpkg、Conan、 xmake。

包管理器的目标是:自动化下载、自动化编 译、自动化填路径。 ++社区目前已经有几个非常强的包管理器: 微软主导的vcpkg、JFrog主导的 Conan、 国 人开发的xmake。 (1)vcpkg, 最适合 Windows/VS 用户。 既然二进制兼容太难,vcpkg就把源码下载下 来,在本地现编译一遍。运行一次 vcpkg integrate install 后,Visual Studio 会自动识 别 vcpkg 下载的所有库。 优点:Windows 下做到零配置。因为全是本地 现编译的,没有 ABI 问题。库的数量非常多且 更新快。 缺点:是慢,因为要编译源码,要几十分钟、 一小时。源码和编译中间文件都会保留,安装

几个大库后,吃掉 10GB 硬盘是常事。默认是安装最新版,不好进行版本锁定。

(2)Conan是 JFrog 公司(做 Artifactory 的那家)主导的开源包管理器。类似 Python 的 Pip、Java 的 Maven,支持二进制缓存,企业级管理。

二进制缓存,是Conan 和 vcpkg 最大的区别:vcpkg 默认倾向现场编译源码,Conan 默认倾向下载预编译好的二进制包。

为解决C++ 的二进制不兼容问题(ABI),Conan 发明一套配置计算哈希的机制。

还有一个必须要说,vcpkg 虽然也支持私有库,但配置相对麻烦; Conan 支持去中心化。

优点:跨平台、速度非常快、版本控制严格。

缺点:概念很多(Profile, Recipe, Generator, Remote),新手容易晕。而且依赖 Python;比 vcpkg 的配置复杂。

但是,不管怎么说,Conan 是目前最专业、最标准的解决方案。只是上手稍微麻烦点。

(3)xmake

xmake 既是构建工具,也是包管理器。因为 CMake 语法太反人类,所以用 Lua 语言重新设计了一套。

在 xmake ,只要写xmake.lua,然后xmake,自动下载库、自动编译、自动链接、自动运行。没有 mkdir build,没有 cmake ..,没有 make,只有一个命令。

优点:体验最好、支持多源。

缺点:xmake 目前更多是个人项目或中小团队,如果去大厂工作,大概率还是得用 CMake。

【瓜分奖池】C++目前非常强的包管理器:vcpkg、Conan、 第5张插图
【瓜分奖池】C++目前非常强的包管理器:vcpkg、Conan、 第6张插图
【瓜分奖池】C++目前非常强的包管理器:vcpkg、Conan、 第7张插图