如何在Visual Studio、Clion、Msys2中安装和使用vcpkg

news2025/6/9 15:21:34

首先事情是在安装了Msys2之后,想在Clion中使用安装在Msys2中的vcpkg。但是折腾了很久还是无法解决。于是就折腾出了这篇文章,和下一篇如何在Clion使用vcpkg的文章。

不过,由于我电脑上已近配置好了vcpkg以及环境变量,要是重新删除再搞特别麻烦,于是教程我使用msys2来掩饰。你们只需要将msys2当成cmd或终端既可。

第一步,使用git命令克隆下vcpkg的源码。

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

输入命令之后,等待下载成功。

在这里插入图片描述

第二步,下载vcpkg.exe。

使用cd命令,进入到vcpkg目录下。

cd vcpkg/

在这里插入图片描述

我们可以使用ls命令查看vcpkg目录下有什么文件。

 ls

在这里插入图片描述

可以看到bootstrap-vcpkg有两个版本,一个windows脚本,一个shell脚本。

因为我们是windows安装vcpkg,虽然我现在是使用msys2但是也是使用bootstrap-vcpkg.bat。让我们输入下面命令会从github的release下载编译好的vcpkg.exe。

注意:msys2是模拟Linux环境,所以应该注意目录。

Linux:

./bootstrap-vcpkg.bat

Windows:

.\bootstrap-vcpkg.bat

我们使用第二个

在这里插入图片描述

运行之后我们,可以看到vcpkg.exe已经下载成功了

在这里插入图片描述

第三步,配置vcpkg环境变量(可选)

为什么是可选,因为在你install第三方库的时候,vcpkg会自动下载cmake,所以配不配意义都不大。但是配一下不是更有意思吗?

接下来,我们可以配置环境变量,在开始菜单中搜索

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个目录是你vcpkg的目录,虽然我是使用msys2演示安装,但是配置环境变量是使用我已经安装好的。偷懒,懒得删除重新搞。
在这里插入图片描述

配置好环境变量之后,重启你的终端,让环境变量生效。

第四步,配置Cmake(可选)

Cmake官网https://cmake.org/download/

在这里插入图片描述

找到合适自己系统架构的版本,我们直接安装便携版 cmake-3.26.0-rc1-windows-x86_64.msi【点击下载】

下载之后,直接打开运行,需要注意的只是这个页面可选添加环境变量和添加桌面图标。
在这里插入图片描述

选好,直接Next到结束,我们可以进入系统环境变量,中查看

在这里插入图片描述

环境变量已经配置成功。

第五步,使用vcpkg

输入命令

vcpkg integrate install

在这里插入图片描述

这句话需要复制出来。

“-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake”

接下来,我们安装一个第三方库,xlnt。

vcpkg.exe install xlnt:x64-windows

我们也可以设置 VCPKG_DEFAULT_TRIPLET来指定默认的架构,这样子我们就不需要加:x64-windows了。

Windows:

set VCPKG_DEFAULT_TRIPLET=x64-windows

官方文档:

如果该环境变量未定义,则运行任何 vcpkg 命令时的默认三元组是%VCPKG_DEFAULT_TRIPLET%或特定于平台的选择。

  • Windows:x86-windows
  • Linux:x64-linux
  • MacOs:x64-osx

安装好库,我们使用vcpkg list命令查看

在这里插入图片描述

接下来我们打开Visual Studio

SLN(解决方案)项目使用

选择空项目,然后都是一些简单的,直接下一步既可。
在这里插入图片描述

创建好项目之后,先回到终端输入命令配置

vcpkg integrate project

与VisualStudio集成。

在这里插入图片描述

进入项目文件,之后找到工具——>NuGet包管理器——>管理解决方案的NuGet程序包

在这里插入图片描述

因为我已经安装过了,只能大概教你们怎么安装,就是点击右上角绿色加号,添加

D:\vcpkg\scripts\buildsystems

这个目录进去,

在这里插入图片描述

添加成功后,将右上角的程序包源改成vcpkg,然后将其添加到你当前的项目。

在这里插入图片描述

将下面这段代码粘贴进去

#include <xlnt/xlnt.hpp>

using namespace xlnt;

int main()
{
    workbook wb;
    worksheet ws = wb.active_sheet();
    ws.cell("A1").value(5);
    ws.cell("B2").value("string data");
    ws.cell("C3").formula("=RAND()");
    ws.merge_cells("C3:C4");
    ws.freeze_panes("B2");
    wb.save("example.xlsx");
    return 0;
}

在这里插入图片描述

可以看到我们引用头文件,并没有报错,也可以直接编译。

Visual Studio中使用

Cmake项目

新建项目,选择cmake项目,我就多放几张图吧,打字太累了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在搜索栏中搜索cmake,找到cmake设置。其实也就是从项目目录中,找到打开CMakePresets.json
在这里插入图片描述在这里插入图片描述

添加下面这段json到文件中。

    "CMAKE_TOOLCHAIN_FILE": {
            "type": "FILEPATH",
            "value": "D:/vcpkg/scripts/buildsystems/vcpkg.cmake"
        },
        "DVCPKG_TARGET_TRIPLET": "x64-windows"},

在这里插入图片描述

选择删除并重新生成缓存

接下来进入到

在这里插入图片描述

添加

find_package(Xlnt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE xlnt::xlnt)

然后就是我们的测试了

#include <xlnt/xlnt.hpp>

using namespace xlnt;

int main()
{
    workbook wb;
    worksheet ws = wb.active_sheet();
    ws.cell("A1").value(5);
    ws.cell("B2").value("string data");
    ws.cell("C3").formula("=RAND()");
    ws.merge_cells("C3:C4");
    ws.freeze_panes("B2");
    wb.save("example.xlsx");
    return 0;
}

在这里插入图片描述

我们可以看到运行成功,这个时候就有人好奇,怎么看出来运行成功没有,

我们进入到输出目录,就可以看到生成文件了。

在这里插入图片描述

Clion中使用

首先下载Clion测试版,当然不使用也是可以的只是更麻烦

https://blog.jetbrains.com/clion/2023/01/support-for-vcpkg-in-clion/

链接里面有测试版Clion使用vcpkg包管理器的使用教程,

而现在我教的是手动配置运行环境。

使用Clion先创建一个项目
在这里插入图片描述

接下来,去设置中,找到cmake选项

在这里插入图片描述

将之前控制台输出的

-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake

直接复制粘贴进去
在这里插入图片描述

当然,你还可以添加一句,不加默认x86-windows,你就可能报错找不到库的cmake文件。

-DVCPKG_TARGET_TRIPLET=x64-windows

指定使用x64-windows

然后进入CMakeLists.txt文件添加以下两句话。

find_package(Xlnt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE xlnt::xlnt)

在这里插入图片描述

推荐使用工具中的,cmake选项,重置缓存并重新加载项目。

毕竟之前的cmake会有一点点缓存。

在这里插入图片描述

可以看到,并没有报错,现在是时候拿出我们的测试代码了。

#include <xlnt/xlnt.hpp>

using namespace xlnt;

int main()
{
    workbook wb;
    worksheet ws = wb.active_sheet();
    ws.cell("A1").value(5);
    ws.cell("B2").value("string data");
    ws.cell("C3").formula("=RAND()");
    ws.merge_cells("C3:C4");
    ws.freeze_panes("B2");
    wb.save("example.xlsx");
    return 0;
}

哎呀,遇到问题了。

在这里插入图片描述

将工具链,切换成Visual Studio

又遇到问题了,只是我们安装的cmake版本太高了,还配置了环境变量,导致新建项目直接就设置为了3.25版本。clion只支持3.24.x,我们安装的是3.26版本,

CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.25 or higher is required.  You are running version 3.24.2

修改为cmake_minimum_required(VERSION 3.14)降低编译所需要的最小版本

又是一个小问题,不慌,问题不大。也就是项目运行不了,而已。

"D:\Program Files\JetBrains\CLion 231.6471.1\bin\cmake\win\x64\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=D:/Program Files/JetBrains/CLion 231.6471.1/bin/ninja/win/x64/ninja.exe" -DCMAKE_PREFIX_PATH=D:\msys64\mingw64 -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -G Ninja -S C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo -B C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo\cmake-build-debug-visual-studio
-- The C compiler identification is MSVC 19.34.31937.0
-- The CXX compiler identification is MSVC 19.34.31937.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at D:/vcpkg/scripts/buildsystems/vcpkg.cmake:843 (_find_package):
  Could not find a configuration file for package "Xlnt" that is compatible
  with requested version "".

  The following configuration files were considered but not accepted:

    D:/vcpkg/installed/x64-windows/share/xlnt/XlntConfig.cmake, version: 1.5.0 (64bit)

Call Stack (most recent call first):
  CMakeLists.txt:5 (find_package)


-- Configuring incomplete, errors occurred!
See also "C:/Users/MI/CodeSpace/ClionCodeProjects/vcpkgdemo/cmake-build-debug-visual-studio/CMakeFiles/CMakeOutput.log".

[已完成]

实际上这个问题,我也不知道如何解决,但是我知道它怎么发生的。

因为我设置了,-DVCPKG_TARGET_TRIPLET=x64-windows,指定了只能使用x64-windows

我们可以看到又报错,不错很爽

"D:\Program Files\JetBrains\CLion 231.6471.1\bin\cmake\win\x64\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=D:/Program Files/JetBrains/CLion 231.6471.1/bin/ninja/win/x64/ninja.exe" -DCMAKE_PREFIX_PATH=D:\msys64\mingw64 -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -G Ninja -S C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo -B C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo\cmake-build-debug-visual-studio
-- The C compiler identification is MSVC 19.34.31937.0
-- The CXX compiler identification is MSVC 19.34.31937.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at D:/vcpkg/scripts/buildsystems/vcpkg.cmake:843 (_find_package):
  Could not find a package configuration file provided by "Xlnt" with any of
  the following names:

    XlntConfig.cmake
    xlnt-config.cmake

  Add the installation prefix of "Xlnt" to CMAKE_PREFIX_PATH or set
  "Xlnt_DIR" to a directory containing one of the above files.  If "Xlnt"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  CMakeLists.txt:5 (find_package)


-- Configuring incomplete, errors occurred!
See also "C:/Users/MI/CodeSpace/ClionCodeProjects/vcpkgdemo/cmake-build-debug-visual-studio/CMakeFiles/CMakeOutput.log".

[已完成]

在这里插入图片描述

不慌,找不到库罢了,但是我们不是安装了x64-windows吗?

为什么找不到,虽然是默认x86-windows,但是我使用DVCPKG_TARGET_TRIPLET指定了版本啊~

Clion测试版中,找到这个省略号,点击vcpkg,既可打开clion测试版的vcpkg包管理器。

搜索xlnt之后
在这里插入图片描述

选择x86-windows架构,然后点击安装。

在这里插入图片描述

等待下载在这里插入图片描述

让我们清除Cmake的缓存,之后等待cmake的构建。既可,看见出现了可以运行。

在这里插入图片描述

点击运行之后,成功生成文件了,接下来我们知己

在这里插入图片描述

配置了环境使用命令行的也就是一句话

vcpkg install xlnt:x86-windows

就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C】ASCII 的十六进制字符转文件

概述 本项目是我自己使用的 来源于用串口传文件数据到电脑进行分析的时候,需要转换成可以打开的文件 而常用的串口助手大都没有直接保存为二进制文件的功能 也完全可以当作c语言初学者的练习项目(很简单) 需求 用串口传来的文件是如下格式(ASCII字符) 需要将其转化为二进制数据…

Netty相关面试题

文章目录TCP、UDP的区别&#xff1f;同步与异步、阻塞与非阻塞的区别&#xff1f;BIO、NIO、AIO分别是什么&#xff1f;Netty跟Java NIO有什么不同&#xff0c;为什么不直接使用JDK NIO类库&#xff1f;Netty的粘包/拆包是怎么处理的&#xff0c;有哪些实现&#xff1f;说说Net…

网络安全的就业及发展前景如何?

网络空间安全专业简称“网络安全专业”&#xff0c;主要以信息构建的各种空间领域为主要研究对象&#xff0c;包括网络空间的组成、形态、安全、管理等。该专业致力于培养“互联网”时代能够支撑和引领国家网络空间安全领域的具有较强的工程实践能力&#xff0c;系统掌握网络空…

完美!终于有人把《数据结构与算法》讲透彻了(附源码笔记),复杂的问题变简单了

开篇 数据结构是计算机科学与技术专业非常重要的一门核心基础课&#xff0c;计算机科学各个领域以及各种应用软件都要使用相关的数据结构和算法。 本篇的主要目的不是提供关于数据结构和算法的定理及证明。本书采用的模式是利用不同的复杂度改善问题的解决(对于每个问题&…

Spring面试重点(一)——Spring容器

Spring容器 手写Autowired注解 /** 实现spring的Autowired注解 **/ //运行时触发 Retention(RetentionPolicy.RUNTIME) //作用于变量 Target(ElementType.FIELD) public interface Autowired {}public class UserController {Autowiredprivate UserService userService;/*** …

专家说年轻人工资低是能力不行….

我们国家的很多专家总讲究语不惊人死不休&#xff0c;同时他们还很喜欢话风高速原地调头。 最近又有一个碉堡了的专家在大放厥词&#xff0c;就在前几天的首届长白山高峰论坛上中航基金副总经理邓海清发表批评年轻人的言论&#xff0c;邓老板是这么说的&#xff1a;很多年轻人…

数据分析实战项目3:RFM用户分群

目录1、RFM模型介绍2、Excel实际RFM划分案例3、RFM案例3.1 数据加载和基本信息查看3.2 数据预处理和RFM的初始值计算3.3 RFM区间和划分和分值计算3.4 RFM计算结果保存3.4.1 保存到excel3.4.2 保存到数据库3.5 RFM计算结果可视化3.6 结果分析&#xff08;营销建议&#xff09;3.…

[docker]笔记-基础配置

1、docker启动和设置开机启动 [rootlocalhost ~]# systemctl start docker [rootlocalhost ~]# systemctl enable docker 2、更换docker镜像网站&#xff0c;默认docker镜像网站是国外网站&#xff0c;下载镜像非常慢&#xff0c;需要更换为国内网站&#xff0c;以阿里云为例…

android多渠道打包(只编译一次)

众所周知&#xff0c;android 默认工具gradle可以配置多个productFlavors&#xff0c;以此实现配置多个不同版本&#xff0c;渠道的app应用&#xff0c;笔者认为这个编译速度很慢&#xff0c;于是乎有了今天的方案。希望能抛砖引玉为大家带来不一样的思路&#xff0c;废话不多说…

基于蜣螂算法改进的DELM预测-附代码

基于蜣螂算法改进的深度极限学习机DELM的回归预测 文章目录基于蜣螂算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.蜣螂算法4.蜣螂算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1…

QT基础入门【布局篇】消除控件之间的间隔

一、相关参数 layoutLeftMargin: layout内的布局距离边框左端的距离。 layoutTopMargin: layout内的布局距离边框顶端的距离。 layoutRightMargin: layout内的布局距离边框右端的距离。 layoutBottomMargin: layout内的布局距离边框底端的距离。 layoutHorizontalSpacing: layo…

【每日阅读】前端了解的HTTP协议知识(二)

HTTP 简介 HTTP 协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议&#xff1b; HTTP工作原理 HTTP协议工作于客户端-服务端架构上&#xf…

算法导论—近似算法

近似算法基础1. 近似算法的基本概念2. 近似算法的性能分析1. 近似算法的基本概念 很多实际应用问题都是NP-完全问题&#xff0c;这类问题很可能不存在多项式时间算法。一般而言&#xff0c;NP-完全问题可采用以下三种方式处理。 如果问题的输入规模较小&#xff0c;则可以利用…

利用IO工具包拷贝文件夹或者文件

引入依赖 <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version> </dependency> code 拷贝文件夹 PostMapping("/findB00List") CrossOrigin public Result …

(考研湖科大教书匠计算机网络)第三章数据链路层-第十节:以太网交换机的生成树协议STP

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;以太网故障导致的网络问题二&#xff1a;利用冗余链路提高稳定性&#xff08;1&#xff09;概述&#xff08;2&#xff09;冗余链路带来的问题三&a…

Swagger2 3.0的使用

前言 今天使用了以下swagger2 的3.0.0版本&#xff0c;好家伙&#xff0c;好多坑。在这里记录一下&#xff0c;方便查阅。 一、Swagger的简介 官网&#xff1a;https://swagger.io/ Swagger 是一个规范且完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的…

应用监控以及告警实现

前言 一个Java应用 可以不优秀&#xff0c;但是一定不能没有监控方案。否则极大影响排查线上问题的效 以及系统故障的及时告警 。试想 核心应用挂了一个 但是没有配置告警 理想情况几个小时 被自己人发现了 但是万一自己人也没看到或者没关注 那难道让服务一直挂下去么 &#…

Vue框架学习篇(五)

Vue框架学习篇(五) 1 组件 1.1 组件的基本使用 1.1.1 基本流程 a 引入外部vue组件必须要的js文件 <script src"../js/httpVueLoader.js"></script>b 创建.vue文件 <template><!--公共模板内容--></template><script><!…

LaoCat带你认识容器与镜像(实践篇二上)

实践篇主要以各容器的挂载和附加命令为主。 本章内容 本文实操全部基于Ubuntu 20.04 宿主机 > linux服务器本身 Docker > 20.10.22 在开始本章内容之前&#xff0c;我解答一个问题&#xff0c;有小伙伴问我说&#xff0c;有的容器DockerHub官网并没有提供任何可参考的文…

可信AI年度观察 | 智能语音产业需求不断升级,评测重点由技术转向产品

自《新一代人工智能发展规划》发布以来&#xff0c;人工智能发展已上升为国家战略&#xff0c;在“十四五”规划中&#xff0c;更是将人工智能列为科技前沿领域的“最高优先级”&#xff0c;国家政策支持为人工智能产业发展提供良好环境。同时&#xff0c;各行业逐渐重视改善价…