1. vcpkg 简介
vcpkg是一个开源C++包管理工具,工具可以在Windows, Macos, Linux平台上运行,可以在编译跨平台的C/C++项目时方便的对第三方库进行管理, 支持管理Windows, Linux, macOS, IOS , Android、等等平台下的依赖库。
官方简介: github.com/microsoft/v…
项目地址: github.com/microsoft/v…
2. vcpkg的安装流程
需要用到的工具安装
vscode插件:
工具安装完毕后,使用 git clone 将项目下载下来,命令如下
git clone https://github.com/microsoft/vcpkg
然后执行如下命令生成vcpkg.exe程序
.\vcpkg\bootstrap-vcpkg.bat
执行完毕后即可在CMake项目中进行使用。
3. 使用 vcpkg 安装依赖库
以fmt
库为例,演示如何使用vcpkg,首先通过vcpkg搜索是否已经收录这个库。
.\vcpkg\vcpkg.exe search fmt
如果已经有了可以使用 install 命令进行安装, 命令如下, 其中 x64-windows
指我只安装64位,windows版本,更多的版本信息可以使用vcpkg help triplet
命令查看。
.\vcpkg\vcpkg.exe install fmt:x64-windows
5. vs、vscode集成vcpkg
通过 vcpkg integrate install
, 之后vs创建工程即可直接找到vcpkg已经安装的依赖库,也将自动链接。
如果通过CMake管理的话,需要先在CMakeLists.txt中添加find_package
与target_link_libraries
, 然后在生成CMake工程时添加 -DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake
。
vscode
点击左下角齿轮按钮,选择设置,点击右上角 【打开设置(json)】 图标切换到文本编辑设置。在里面添加如下配置, 其中 CMAKE_TOOLCHAIN_FILE
是 ${vcpkg所在目录}\scripts\buildsystems\vcpkg.cmake
, 根据个人存放位置进行修改。
"cmake.configureSettings": {
"CMAKE_TOOLCHAIN_FILE": "E:\Code\cpp\bilibili_video\vcpkg\scripts\buildsystems\vcpkg.cmake"
配置完成后,就可以开始创建CMake项目进行使用了。示例代码如下:
CMakeLists.txt
cmake_minimum_required(VERSION 3.10.0)
project(vsc_vcpkg_demo)
find_package(fmt REQUIRED)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE fmt::fmt-header-only)
main.cpp
#include <fmt/format.h>
#include <iostream>
#include <string>
int main(int argc, char const *argv[])
std::string hello = "Hello world";
std::cout << fmt::format("string: {}", hello) << std::endl;
fmt::print("fmt version: {}", FMT_VERSION);
return 0;
vcpkg.json
"name": "vscvcpkgdemo",
"version": "0.0.1",
"dependencies": ["fmt"]
直接生成vs工程:
cmake -G "Visual Studio 15 2017" -A x64 -DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}\scripts\buildsystems\vcpkg.cmake ..
4. mainfests 文件指定依赖库
将vcpkg.json文件放置在项目根目录下,CMake在生成工程时将会自动根据文件中描述的依赖信息安装依赖库。
"name": "demo",
"version-string": "8.2.0",
"port-version": 2,
"description": "A description of the library.",
"dependencies": [
"name": "curl",
"default-features": false,
"features": [
"winssl"
"platform": "windows"
"rapidjson"
5. 指定依赖库的版本号
"name": "demo",
"version": "0.0.1",
"dependencies": ["fmt", "zlib"],
"builtin-baseline": "9a7d5a29dd0e066ff4a7dbeba4bd8af4daae8b60",
"overrides": [
{ "name": "fmt", "version": "7.1.2" },
{ "name": "zlib", "version": "1.2.11#7" }
6. 使用binarycache共享编译好的依赖库
通过添加环境变量指定缓存目录:VCPKG_DEFAULT_BINARY_CACHE , 团队成员设置到共享盘之后只需要编译一次其他人即可直接使用。