vcpkg - 方便的 C/C++ 库管理器

最近在做一个大型的 C++ 项目 ── Albumist。它使用 Qt,需要用到很多类似 sqlite3exiv2libcurl 之类的库。第三方库管理似乎成了问题。

支持 git 的都可以使用 git submodule 来管理,但是还有少部分是不支持的,或者是二进制的,比如 sqlite3。这就要我们手动去下载,手动去更新,好生麻烦。

vcpkg

我一直想要一个类似 npm pip 一样的东西,把依赖写在文件里面,然后直接 install 即可。

经过搜索,我发现了微软的一个项目 vcpkg。官方定义它为 “C++ Library Manager for Windows, Linux, and MacOS”,简单翻译一下就是 “支持 Windows, Linux 和 macOS 的 C++ 库管理器”。

在 Arch Linux 上面,安装它并不复杂,只需要:sudo pacman -S vcpkg-git 即可。其他系统没有尝试过,跟着它的 README 也很方便安装。

“清单” 功能

在项目根目录创建一个 vcpkg.json, 然后 vcpkg install。这一功能就是“清单”功能。它正好是我想要的,可是却暂时处在 Beta 阶段,不过也无关紧要。

要启用“清单”功能,在执行命令时,需要接参数 --feature-flags = manifests

清单大概长这样:

1
2
3
4
5
6
7
8
{
"name": "<name of your project>",
"version-string": "<version of your project>",
"dependencies": [
"abseil",
"boost"
]
}

很方便,也很快捷。

不足

比起这样一个纯粹的管理器,我更希望获得类似 Java 的 Gradle 的体验。如果 CMake 能加入类似功能,体验一定能够翻倍,快捷方便且无需第三方软件。

后记

—- 2020 08 15 更新

又停止使用这个东西了,Windows 上面需要 MSVC。。。