vcpkg 从安装到使用

1. vcpkg 简介

vcpkg是一个开源C++包管理工具,工具可以在Windows, Macos, Linux平台上运行,可以在编译跨平台的C/C++项目时方便的对第三方库进行管理, 支持管理Windows, Linux, macOS, IOS , Android、等等平台下的依赖库。

官方简介: github.com/microsoft/v…

项目地址: github.com/microsoft/v…

2. vcpkg的安装流程

需要用到的工具安装

  • vs: visualstudio.microsoft.com/zh-hans/vs/…
  • vscode: code.visualstudio.com/
  • git: git-scm.com/downloads
  • cmake: cmake.org/
  • vscode插件:

  • CMake
  • CMake Tools
  • CMake Integration
  • 工具安装完毕后,使用 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_packagetarget_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在生成工程时将会自动根据文件中描述的依赖信息安装依赖库。

    github.com/microsoft/v…

    "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共享编译好的依赖库

    官方文档:github.com/microsoft/v…

    通过添加环境变量指定缓存目录:VCPKG_DEFAULT_BINARY_CACHE , 团队成员设置到共享盘之后只需要编译一次其他人即可直接使用。

    分类:
    开发工具
  •