在现代软件开发中,使用开源第三方库是非常常见的做法。但是第三方库的下载和编译,尤其是涉及到跨平台时,一直是一个费时费力的过程。以我之前的经历来讲,如webrtc、obs都是自己手动下载、编译、配置,Windows平台弄完,mac平台还要再来一遍,真的是一个非常痛苦的事情。而包管理工具vcpkg的出现,不仅改变了开发流程,也提高了开发效率。
vcpkg 是一个跨平台的 C++ 包管理工具,通过简单命令进行依赖库的搜索和下载,vcpkg具有如下的优点:
当然,目前也存在很多其他的包管理工具,如Conan、Hunter等,这两个工具也具有其应用场景和存在的价值,但是对于新手来说,vcpkg更加友好。
vcpkg 的安装非常简单,只需要克隆 vcpkg 仓库,然后运行安装脚本即可。
克隆仓库,执行如下命令即可
git clone https://github.com/microsoft/vcpkg.git
进入 vcpkg 目录并运行安装脚本,如下:
cd vcpkg
./bootstrap-vcpkg.bat //windows平台
./bootstrap-vcpkg.sh //linux or mac
添加到环境变量(可选):为了在命令行中直接使用 vcpkg 命令,可以将 vcpkg 目录添加到系统的环境变量中。windows平台需要将 vcpkg 目录添加到 PATH 环境变量中。linux or mac平台需要将 vcpkg 目录添加到 PATH 环境变量中。
vcpkg 的使用非常简单,
搜索库:使用 vcpkg search 命令搜索库,例如:
vcpkg search boost
安装库:使用 vcpkg install 命令安装库,例如:
vcpkg install boost
卸载库:使用 vcpkg remove 命令卸载库,例如:
vcpkg remove boost
更新库:使用 vcpkg update 命令更新库,例如:
vcpkg update
清理缓存:使用 vcpkg clean 命令清理缓存,例如:
vcpkg clean
如上命令,搜索、安装、卸载、更新均未指定平台,也未指定库的类型,所以vcpkg会自动根据当前的平台下载对应的动态库。如果希望安装指定平台的库,可以在命令中指定,例如:
vcpkg install boost --triplet x64-windows //windows平台动态库
vcpkg install boost --triplet x64-windows-static //windows平台静态库
查找安装的库
在工程中,尤其涉及到多人开发时,是需要将依赖库放置到项目中去的,所以找到用命令安装的库是非常重要的。如果强制指定则到自己指定位置查找;如果没有强制指定时,vcpkg会将库安装到 vcpkg/installed/<triplet> 目录下,如下图所示:

文件夹内部会有如下文件夹
你可以通过 CMake 配置这些路径,来方便地将库集成到项目中。
包管理工具的引入极大地提升了软件开发的效率,尤其是在跨平台开发中,能够自动处理依赖关系和版本兼容性。vcpkg 作为一个简单易用、功能强大的工具,能够帮助开发者轻松管理 C++ 库,尤其是在跨平台开发中,提供了无缝的支持。 与其他工具相比,vcpkg 凭借其简洁的命令行工具、广泛的库支持和与 CMake 的紧密集成,成为 C++ 开发者的首选工具。无论是简单的库安装,还是复杂的跨平台项目,vcpkg 都能轻松应对。
如上讨论均不涉及对于库的二次开发,如果涉及到库的二次开发,仍需要手动下载、编译对应的库,然后集成到项目中。