文章目录
Vcpkg的好处不在赘述,它可以无缝集成Visual Studio,不需要设置库文件、头文件的所在目录,自动集成。Vcpkg安装完成后,集成到全局,Visual Studio就可以直接使用开源的第三方库。但VScode其实也可以使用安装好的Vcokg。下面主要介绍一下步骤
1、安装vcpkg并集成到全局
具体参考这篇文章
2、安装VScode并配置好C++编程环境
具体参考这篇文章:VSCode配置C/C++环境和这篇文章:VScode与MinGW配置C++开发环境记录
3、在VScode中使用Vcpkg
注意这里分为两步:
一、告诉编辑器,vcpkg的include在哪
二、告诉编译器,vcpkg的include在哪
注意:如果你在编辑器中包含了vcpkg中的头文件,而且能找到它的源文件,但是编译总是失败,那就是编译器找不到vcpkg。
我们以vcpkg的EIgen库来说明:虽然能找见源文件,但就是编译不通过,因为这只是编辑器找到了,而编译器没找到,如果你之前安装过Vcpkg,并且配置好了VScode的C++环境,然后直接调Vcpkg的库,很大概率就会遇到这个问题,博主就踩了这个坑。
因此我们按一下步骤来配置:
(1) 查看c_cpp_properties.json文件中的"includePath"
理论上来讲,如果安装和配置好vcpkg之后,我们就可以看到在你自己配置好的.vscode文件夹下面c_cpp_properties.json文件中的"includePath"中找到这么一句代码:
"${vcpkgRoot}/x64-windows/include"
如果没有,那就再将vcpkg再集成到全局一次,或者自己添加上去。最终的c_cpp_properties.json文件内容就是下面这样:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${vcpkgRoot}/x64-windows/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "E:/MinGW64/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64",
"compilerArgs": []
}
],
"version": 4
}
(2) 在tasks.json文件中修改"args"内容
在你自己配置好的.vscode文件夹下面tasks.json文件中的"args"n内容最后添加下面这两句代码,这两行的作用是让编译程序按照
−
I
\bm{-I}
−I指定的路进去搜索头文件。注意修改的文件路径要是自己安装的文件的路径,博主用的是自己安装的路径,所以不要直接copy。
注意这里
−
I
\bm{-I}
−I要用绝对路径,如果是用上面的相对路径"${vcpkgRoot}/x64-windows/include"也会编译失败!!!
"-I"
"E:/vcpkg/installed/x64-windows/include"
最终的tasks.json文件内容就是下面这样:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "E:/MinGW64/mingw64/bin/g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${workspaceFolder}\\executable_file\\${fileBasenameNoExtension}.exe",
"-I",
"E:/vcpkg/installed/x64-windows/include"
],
"options": {
"cwd": "E:/MinGW64/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: E:/MinGW64/mingw64/bin/g++.exe"
}
]
}
4、测试效果
我们以vcpkg的EIgen库来说明,搞一段简单的代码,利用Eigen库来计算一个3x3的矩阵,并输出
#include<iostream>
#include<Eigen/Dense>
#define MM_PI 3.14159265358979323846264338327950
int main()
{
Eigen::Matrix3d Matrixcomp;
Matrixcomp << cos(MM_PI * 3 / 4), -sin(MM_PI * 3 / 4), 0,
sin(MM_PI * 3 / 4), cos(MM_PI * 3 / 4), 0,
0, 0, 1;
std::cout<<Matrixcomp;
return 0;
}
结果如下图: