vcpkg在clion和vs2022上的使用
clion中使用
vcpkg配合vs的编译套件使用!!!,使用mingw特别出错!!!,还是老老实实使用msvc编译吧,以下都是基于msvc,
一.添加一个vcpkg
可以通过左侧栏添加,也可以双击shift
搜索vcpkg添加
注意:add vcpkg integration to existing profiles
要勾选上,不然项目使用不了
通过以上步骤,它就会从GitHub上面下载vcpkg,这里看个人网络问题,可能会失败,如果网络不好的话,就会下载失败(主要它是下一半才失败,太搞心态了,受不了一点,我都不知道下了几次,家人们谁懂啊),如果好的话一下子就好了。
同时,通过以上步骤,他还会在cmake上面添加一个脚本,用于在运行前安装和编译库
二.安装库
vcpkg
一个有两种模式,一种是经典模式
,另一种是清单模式
,通过清单模式,我们可以在运行时使用当前项目的编译器编译库文件,这样就不会存在什么编译器差异,系统差异什么的,而经典模式就会出现差异的问题,所有推荐使用清单模式。
1.选择清单模式
如果之前有下载过别的库,可以选择添加的库,选择的这些库将放到一个json文件中,这里我什么都不添加,直接点确定
如果不出意外,那就好显示成功,但凡是就有例外,还总让我碰到,难搞…(如果你创建的vcpkg是直接再终端上使用git clone …拉取创建的就会出现问题,如第二张图,解决办法是直接再clion上按我前面的步骤创建一个新的vcpkg,不要使用终端上面创建的)
二:添加库 (这里以lunasvg
库为例)
搜索lunasvg库,然后点击add to vcpkg.json
,就会自动添加到json文件了
这样就成功了,但是你会发现,他没有没你使用方法!!!,也是我一顿乱摁才发现解决方法的(其实还有一直方法,就是在终端中再安装一边库,就能看见使用方法了)
点击cmake
,再点击add event tracing cmake options
,就出来了
将这两行代码添加到cmakelists.txt中,注意更改项目名字,这里的项目名字默认为main
然后重新加载cmakelist
文件,这时你会发现,还是报错,惊不惊喜,意不意外!!!
解决方案时将原来的build不了删除,再重新加载cmakelist文件,这样就解决了
这样就能使用了!!!
在vs2022中使用
1.经典模式
(这个就简单很多了,但他没有图像化界面,需要在终端上安装)
我建议是将clion的vcpkg和vs的vcpkg分开,其一是,我发现使用list命令查看安装的库时,找不到clion上面安装的库,明明在clion的vcpkg文件夹中就是存在安装的库,就是找不到,其二就是好管理(我乱说的,不知道有没有这个原因,但占的内存肯定是比只是要一个clon的vcpkg要多的)
在你使用终端使用 install 安装某个库时
使用vcpkg integrate install后可以全局到vs2022,vs2022可以直接使用 ,如果不使用vcpkg
integrate install,需要在项目属性中添加包含目录和库目录, 或者使用vcpkg integrate
project,这样可以在单个项目中使用vcpkg,否者使用不了
2.清单模式
步骤一:点击
项目
,选择项目属性
,选择vcpkg
,将use vcpkg Manifest
改为是
步骤二:创建一个名为
vcpkg.json
的文件,以下是一个模板特别注意,项目名字一定要小写,不然就会报错如下图
{
"name": "testvcpkg",
"version-string": "0.1.0",
"dependencies": [
"nlohmann-json",
"fmt",
"lunasvg",
"sqlite3",
"boost"
]
}
改成小写以后,难搞,翻车了,此文结束!
家人们,谁懂啊,写个注释都不行,不要出现中文了!!!有时间立马学个json,难受
步骤三: 执行
.\vcpkg.exe integrate install
设置全局到vs2022,这是vs2022会自动识别vcpkg.json文件,如果执行这条命令,你懂的,找不到头文件,不要问我怎么知道的…
步骤四: 生成解决方案,vs就会自动下载所需要的依赖了,就能正常使用头文件了
小知识
一.为vcpkg添加环境变量
添加VCPKG_DEFAULT_TRIPLET
以后,就不需要在库名字的后面添加:x64-windows了,直接vcpkg install 库名
,如:vcpkg install lunasvg
二.添加vcpkg.exe
的环境变量
这样就可以使用powershell随时添加库了,不需要再使用.\vcpkg.exe,直接vcpkg install xxx
更新:
如果使用clion远程连接linux,需要使用vcpkg时,需要使用命令vcpkg integrate install
得到全局使用的DCMAKE_TOOLCHAIN_FILE
地址,例如
将得到的命令粘贴到项目的cmake选项即可,我发现有时候使用在cmakelists文件中使用set命令设置无法成功,不知道为什么