问题

  C++的包管理一直很令人头疼。不像Python拥有如pip之类的工具,一键pip install xxx简单而优雅,C++的第三方库配置复杂且容易出错,极度劝退新手。Ubuntu尚且有apt可以使用,Windows并不自带该类工具,我个人都是源码编译后配置成.props文件直接添加到VS工程中。手动添加.props配置其实还挺方便,源码编译不仅繁琐,还要踩一路的坑。Vcpkg是一个跨平台的包管理工具,降低了第三方依赖的安装难度。

使用

  Vcpkg的安装也很方便,Windows下直接在PowerShell里输入:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat

即可安装。安装好后会在目录下生成vcpkg.exe文件,可以将该目录加入到环境变量当中方便使用。安装某个库,终端输入.\vcpkg install xxx,如安装rapidjson

.\vcpkg install rapidjson

就会自动下载源码编译。当然你也可以指定安装平台,如:

.\vcpkg install rapidjson:x64-windows

安装到Windows-x64的开发环境下。之后,如果要在Visual Studio中使用,终端内输入:

 .\vcpkg integrate install

新建的项目工程都会自动集成该依赖的环境,无需手动添加任何目录就能够#include xxx
  Vcpkg配合CMake食用更佳。所有安装好的依赖都会被配置在scripts\buildsystems\vcpkg.cmake文件中,若要使用CMake构建项目,在CMake命令选项中加入-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]\scripts\buildsystems\vcpkg.cmake即可,[vcpkg root]就是vcpkg的根目录。怎么样,是不是很方便呢?

体验

  个人使用vcpkg安装了rapidjson,并且在VS中进行了测试,Windows下无需自己编译并配置.props文件,ubuntu下目测也不需要查看作者提供的cmakemake等等操作,体验还是很流畅的。唯一遗憾的是,下载源码时缓慢的速度,甚至下载源码的时间会比编译还长,也没有找到能够使用代理的方法。知乎上有大佬做了vcpkg的国内镜像,可以考虑试一试。在这里感谢相关contributors的付出,也希望这个社区能活跃起来。