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

news/2024/5/14 18:04:19/文章来源:https://blog.csdn.net/qq_42282949/article/details/128957068

首先事情是在安装了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 compatiblewith 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 ofthe following names:XlntConfig.cmakexlnt-config.cmakeAdd 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 beeninstalled.
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.luyixian.cn/news_show_255753.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析

背景 最近引入了 Nacos Config 配置管理能力&#xff0c;说起来用法很简单&#xff0c;还是踩了三个坑。 Nacos Config 的 nacos 的帐号密码加密配置后&#xff0c;怎么解密而且在 NacosConfigBootstrapConfiguration 真正注入 Nacos Config 注入之前&#xff0c;而且不能触发…

小白系列Vite-Vue3-TypeScript:009-屏幕适配

上一篇我们介绍了ViteVue3TypeScript项目中mockjs的安装和配置。本篇我们来介绍屏幕适配方案&#xff0c;简单说来就是要最大程度上保证我们的界面在各种各样的终端设备上显示正常。通用的屏幕适配方案有两种&#xff1a;① 基于rem 适配&#xff08;推荐&#xff0c;也是本篇要…

[DiceCTF 2023] rRabin

一点点学习别人的WP&#xff0c;这回看到一个大姥(r3kapig)的帖子&#xff0c;DiceCTF第二名&#xff0c;不过有好多东西一时还理解不了&#xff0c;得慢慢来。题目这个题有3个功能&#xff1a;rsa加密功能&#xff0c;p,q,N未知&#xff0c;e17低加密指数解密&#xff0c;不过…

Reflections反射包在springboot jar环境下扫描不到class排查过程

需求&#xff1a; 要实现指定pkg&#xff08;如com.qiqitrue.test.pojo&#xff09;扫描包下所有class类信息&#xff1a;使用代码如下 使用的版本&#xff1a;0.10.2&#xff08;截至目前是最新版&#xff09;发现只能在idea编译期间可以获取得到&#xff08;也就是在开发阶段…

解读YOLO v7的代码(三)损失函数

在前两篇博客中我分析了YOLO v7的模型结构以及训练数据的准备。这里将对损失函数的代码进行分析。在train.py中&#xff0c;我们可以看到以下的代码是进行损失值计算的if loss_ota not in hyp or hyp[loss_ota] 1:loss, loss_items compute_loss_ota(pred, targets.to(device…

图解项目延期的原因及解决应对方案大全

项目管理中经常出现项目延期的情况&#xff0c;面对项目延期的风险如何应对是考验每个项目经理管理水平的时候&#xff0c;很多人纵然是工作多年也没有对延期的种种情况进行总结思考。咱们社区的小竹对大家常见的项目延期情况及处理方案进行了详细全面的总结&#xff0c;供大家…

【数据结构-JAVA】排序

排序在现实生活中的应用可谓相当广泛&#xff0c;比如电商平台中&#xff0c;选购商品时&#xff0c;使用价格排序或是综合排序、高考填报志愿的时候&#xff0c;会参考全国大学排名的情况。下面介绍一些计算机中与排序相关的概念&#xff1a;排序&#xff1a;所谓排序&#xf…

python自学之《21天学通Python》(10)——正则表达式

第13章 正则表达式 最初的正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。在这些领域中有对计算&#xff08;自动控制&#xff09;的模型和对形式化语言描述与分类的研究。 程序员所用的正则表达式是指用某种模式去匹配一类具有共同特征的字符串。正则表达…

机器学习调参

机器学习调参常用调参方法举例K邻近算法&#xff08;最常规版本&#xff09;加入交叉验证加上网格搜索GridSearchCV函数介绍GridSearchCVcross_val_score常用调参方法举例 sklearn使得我们在很多编写代码的时候更多的工作倾向于调参数而不是去写算法本身&#xff0c;本篇文章整…

卸载Node.js

0 写在前面 无论您是因为什么原因要卸载Node.js都必须要卸载干净。 请阅读&#xff1a; 1 卸载步骤 1.1通过控制面板卸载node.js winR—>control.exe—>卸载程序—>卸载Node.js 等待—>卸载成功 1.2 删除安装时的nodejs文件夹 通过记忆或者Everthing搜索找…

「自控元件及线路」14 电子电力技术与功率放大器概述

本节介绍电子电力技术的基本概念 本节介绍PD、SCR、GTR、MOSFET、IGBT等电子电力器件 本节介绍功率放大器的基本概念和线性功率放大器 文章目录电力电子技术概述电能变换电子电力器件功率二极管PD晶闸管SCR功率晶体管GTR功率场效应晶体管PowerMOSFET绝缘栅双极晶体管IGBT功率放…

使用 ThreeJS 实现第一个三维场景(详)

文章目录参考描述index.html三维场景的基本实现导入 ThreeJS准备工作场景摄像机视锥体正交摄像机透视摄像机渲染器后续处理将摄像机添加至场景中移动摄像机设置画布尺寸将渲染器创建的画布添加到 HTML 元素中渲染物体结构材质合成将物体添加至场景中代码总汇执行效果动画reques…

你的自动化框架如何设计的?为什么感觉面试官总是不满意,到底问题出在哪?

前言去面试自动化测试岗位&#xff0c;尤其是接口自动化岗位&#xff0c;面试官总会问&#xff1a;说下你的自动化框架如何设计的&#xff1f;为什么回答后&#xff0c;面试官对你的框架设计总是感觉不满意&#xff1f;自动化测试实现的几种方式对于不同的公司来说&#xff0c;…

2023年地方两会政府工作报告汇总(各省市23年重点工作)

新年伊始&#xff0c;全国各地两会密集召开&#xff0c;各省、市、自治区2023年政府工作报告相继出炉&#xff0c;各地经济增长预期目标均已明确。相较于2022年&#xff0c;多地经济增长目标放缓&#xff0c;经济不断向“高质量”发展优化转型。今年是二十大后的开局之年&#…

【参加CUDA线上训练营】零基础cuda,一文认识cuda基本概念

【参加CUDA线上训练营】零基础cuda,一文认识cuda基本概念1.术语2.线程层次2.1 Block、Warp与Thread之间的关系2.2 Thread index1.术语 \\%序号名称描述1HostCPU和内存&#xff08;host memory&#xff09;2DeviceGPU和显存&#xff08;device memory&#xff09;3SMStreaming M…

101-并发编程详解(上篇)

并发编程详解在学习之前&#xff0c;如果多线程的理解足够&#xff0c;可以往下学习&#xff0c;否则的话&#xff0c;建议先看看26章博客&#xff08;只是建议&#xff09;&#xff0c;注意&#xff1a;可能有些字的字体不对&#xff0c;那么一般是复制粘贴来的&#xff0c;但…

开关电源-一种方便快捷计算开关电源环路参数的方法及实例

一种方便快捷计算开关电源环路参数的方法及实例 接上文《技术实例 | 开关电源环路测量时&#xff0c;注入信号的幅值对测量结果的影响》&#xff0c;得到电流环功率级的开环传递函数后&#xff0c;我们通过matlab的sisotool工具箱自动计算出了电流环路补偿器的传递函数C&#…

三层交换机【实验】

目录 1、要求&#xff1a; 2、拓扑&#xff1a; 3、创建vlan和端口定义并划入vlan&#xff1a; 4、创建以太网中继Eth-Trunk使sw1和sw2的相互冗余并且不浪费链路&#xff1a; 5、使用mstp定义组和对应的根&#xff1a; 6、配置网关冗余&#xff1a; 7、核心层的路由的IP配…

云仓仓储的运行模式是什么?

仓库能够简单地定义为一个规划空间&#xff0c;通常是一个用于处置和贮存货物的大型商业建筑。因而&#xff0c;仓储是指在这样一个规划空间中存储和处置货物所触及的一切过程。仓库中常见的货物包括&#xff1a;;机械零配件、建筑资料、废品农产品、家具和电子产品。仓库中的一…

Fluid-数据缓存亲和性调度原理解析

前言在Fluid中&#xff0c;Dataset资源对象中所定义的远程文件是可被调度的&#xff0c;这意味着你能够像管理你的Pod一样管理远程文件缓存在Kubernetes集群上的存放位置。另外&#xff0c;Fluid同样支持对于应用的数据缓存亲和性调度&#xff0c;这种调度方式将应用(e.g. 数据…