C++包管理之`vcpkg`简介
创始人
2024-11-14 20:04:21

文章目录

    • 工程文件
    • 安装`vcpkg`
    • 安装`fmt`库
      • 安装全局的库
      • 安装仅该工程使用的库
    • 在`CMake`中使用`vcpkg`
      • 通过`CMAKE_TOOLCHAIN_FILE`使用`vcpkg`
      • 通过CMakePresets.json使用vcpkg

在C++开发中,我们经常会使用一些第三方库,比如说Boostfmtspdlog等等。这些库的安装和使用一直是一个比较头疼的问题,特别是在Windows平台上。vcpkg就是一个用于管理C++库的工具,它可以帮助我们安装和管理C++库。

本文将通过一个示例来介绍vcpkg的基本使用方法。

工程文件

首先,我们需要一个C++工程。这里我们使用CMake来构建工程。该工程使用到了第三方库libfmt. 我们的工程目录结构如下:

. ├── CMakeLists.txt ├── CMakePresets.json └── main.cpp 

CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.19) project(vcpkg_demo)  find_package(fmt CONFIG REQUIRED)  add_executable(vcpkg_demo main.cpp) target_link_libraries(vcpkg_demo PRIVATE fmt::fmt) 

CMakePresets.json内容如下:

{     "version": 3,     "cmakeMinimumRequired": {         "major": 3,         "minor": 19,         "patch": 0     },     "configurePresets": [         {             "name": "default",             "generator": "Ninja",             "binaryDir": "${sourceDir}/build",             "cacheVariables": {                 "CMAKE_TOOLCHAIN_FILE": "/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake"             }         }     ] } 

main.cpp内容如下:

#include  #include  #include   int main() {     fmt::print("Hello world");      std::vector v = {1, 2, 3, 4, 5};     fmt::println("v = {}\n", v);     return 0; } 

接下来, 我们需要通过vcpkg安装fmt库。

安装vcpkg

首先,我们需要下载vcpkg。可以通过以下命令下载:

git clone https://github.com/microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh # Linux/macOS # .\bootstrap-vcpkg.bat # Windows 

安装fmt

有两种方式, 可以安装全局的库也可以安装仅该工程使用的库.

安装全局的库

然后,我们需要安装fmt库。可以通过以下命令安装:

cd /path/to/vcpkg # 进入vcpkg目录 ./vcpkg install fmt 

安装仅该工程使用的库

cd vcpkg_demo # 进入工程目录 /path/to/vcpkg/vcpkg new --application /path/to/vcpkg/vcpkg add port fmt /path/to/vcpkg/vcpkg install 

此时, 会在工程目录下生成一个vcpkg.json文件, 该文件用于记录工程所使用的库.
内如如下:

{   "dependencies": [     "fmt"   ] } 

还有一个 vcpkg-configuration.json 文件, 用于记录工程所使用的库的版本信息.
内容如下:

{   "default-registry": {     "kind": "git",     "baseline": "cacf5994341f27e9a14a7b8724b0634b138ecb30",     "repository": "https://github.com/microsoft/vcpkg"   },   "registries": [     {       "kind": "artifact",       "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",       "name": "microsoft"     }   ] } 

该文件随着vcpkg版本的更新可能会有变化.

CMake中使用vcpkg

通过CMAKE_TOOLCHAIN_FILE使用vcpkg

接下来,我们需要配置CMake,让它能够找到vcpkg安装的库。我们可以通过以下命令配置:

cd vcpkg_demo/../ # 在vcpkg_demo的上一级目录 cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -S vcpkg_demo -B build-vcpkg-demo cmake --build build-vcpkg-demo 

通过CMakePresets.json使用vcpkg

CMake Presets 是CMake 3.19版本引入的新特性,它可以帮助我们简化CMake的配置。

cd vcpkg_demo cmake --preset default cmake --build build/ 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...