Vcpkg包管理器使用

2024-05-03 02:44
文章标签 使用 管理器 vcpkg

本文主要是介绍Vcpkg包管理器使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vcpkg包管理器使用

文章目录

  • Vcpkg包管理器使用
    • 写在前面
    • 下载安装
      • 安装
    • 使用
      • 安装库
      • 在Vs中使用
      • 在CMake中使用
      • 参考

写在前面

​ vcpkg 是 Microsoft 和 C++ 社区维护的免费开放源代码 C/C++ 包管理器。 它于 2016 年推出,可帮助开发人员将项目迁移到较新版本的 Visual Studio。 vcpkg 已演变成 Windows、macOS 和 Linux 上开发人员使用的跨平台工具。 vcpkg 拥有大量开放源代码库和企业就绪功能,旨在通过支持任何构建和项目系统来促进开发过程。 vcpkg 是核心的 C++ 工具,使用 CMake 中的脚本以 C++ 语言编写。 它从头开始设计,以解决 C/C++ 开发人员体验的独特难点。

  • 测试环境:Win11 + Vs2015 + CMake3.28.0-rc3

下载安装

  • vcpkg: C++ Library Manager

  • Releases · microsoft/vcpkg

  • vcpkg可通过下载源码或者克隆的方式获得

    git clone https://github.com/microsoft/vcpkg
    

安装

  • 官方建议将vcpkg安装在C:\src\vcpkgC:\dev\vcpkg ,否则可能遇到某些库构建系统的路径问题。这个路径称为Vcpkg根目录
  • 导航到vcpkg目录下,运行bootstrap-vcpkg.bat脚本,会自动下载 vcpkg.exe
cd vcpkg && bootstrap-vcpkg.bat

使用

  • vcpkg中有两种模式,经典和清单模式;在经典模式下,vcpkg 维护由单个 vcpkg installvcpkg remove命令生成的 vcpkg 实例中的中心已安装树。 然后,此中心包集可由任意数量的项目共享。清单模式使用声明性 JSON 文件来描述有关项目或包的元数据。 在任何情况下,该文件的名称都的 vcpkg.json
  • 清单模式实际使用时是将库下载并编译到项目目录下,因此可以区分不同的库的不同版本。

安装库

  • 我们这里以fmt库为例子,执行以下命令后会下载对应版本的源码并编译为库。
vcpkg install fmt:x64-windows

在Vs中使用

  • 同为微软的东西,vcpkgVs的适配度非常高可直接在vcpkg目录下使用以下命令集成到Vs

    # 集成到Vs中
    vcpkg integrate install
    # 取消集成
    vcpkg integrate remove
    
  • 执行以上命令后,通过vcpkg安装的库,可在Vs中的源码直接访问头文件,并且不需要手动链接.lib;如果是动态库会自动将.dll拷贝到.exe可执行目录下。

#include <fmt/core.h>
int main()
{fmt::print("Hello World!\n");return 0;
}

在CMake中使用

  • 同样我们以fmt库为例。

  • 如何是CMake项目,则需要在CMake的主CMakeLists.txt文件的project() 前加上以下设置。将[vcpkg root] 换成自己的vcpkg根目录。

    set(CMAKE_TOOLCHAIN_FILE "[vcpkg root]/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
    
  • 查找、链接库

    # 查找库
    find_package(FMT REQUIRED)# 链接库
    target_link_libraries(${PROJECT_NAME} PRIVATE FMT::fmt)
    

参考

  • Visual Studio 中使用 CMake 安装和管理包

这篇关于Vcpkg包管理器使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955672

相关文章

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

使用Python实现网络设备配置备份与恢复

《使用Python实现网络设备配置备份与恢复》网络设备配置备份与恢复在网络安全管理中起着至关重要的作用,本文为大家介绍了如何通过Python实现网络设备配置备份与恢复,需要的可以参考下... 目录一、网络设备配置备份与恢复的概念与重要性二、网络设备配置备份与恢复的分类三、python网络设备配置备份与恢复实

C#中的 StreamReader/StreamWriter 使用示例详解

《C#中的StreamReader/StreamWriter使用示例详解》在C#开发中,StreamReader和StreamWriter是处理文本文件的核心类,属于System.IO命名空间,本... 目录前言一、什么是 StreamReader 和 StreamWriter?1. 定义2. 特点3. 用