我是C++编程的新手,所以请不要评论我在设置"Visual Studio Code“环境时遇到的问题。我正在尝试使用blaze数学包来解决二次规划问题。有了MinGW,我可以通过cmd成功地编译blaze的测试文件,因此我想使用VS代码的GCC。
操作系统: Windows 10.0.19041
GCC: gcc (x86_64-posix seh-rev0,民GW-W64项目搭建) 7.3.0 || (命令: gcc --版本)
VS代码扩展: C/C++ 0.27.1
首先,我浏览了MinGW的VS代码教程:https://code.visualstudio.com/docs/cpp/config-mingw
这很好用,所以我可以轻松地编译我的helloworld.cpp。生成的tasks.json文件类似于下面的tasks.json。
作为我的包管理器(对于blaze或其他包),我使用vspkg-git:https://docs.microsoft.com/en-us/cpp/build/vcpkg?view=msvc-160,因此我在Windows上编程,我不能使用“集成”命令将路径添加到包含路径。因此,我必须手动完成此操作。
我的软件包位于具有绝对路径的文件夹中
C:\Users\Johannes\Desktop\Masterthesis\vcpkg\vcpkg\packages
所以我在"c_cpp_propertier.json"-file上添加了路径
{
"configurations": [
{
"name": "GCC",
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"includePath": [
"${workspaceFolder}",
"C:/Users/Johannes/Desktop/Masterthesis/vcpkg/vcpkg/packages/**"
],
"compilerPath": "C:/Program Files/mingw-w64/x86_64-7.3.0-posix-seh-rt_v5-rev0/mingw64/bin/g++.exe",
"browse": {
"path": []
}
}
],
"version": 4
}
在文件夹中有几个包,因此我在路径的末尾添加了"/**“,以启用对头文件的递归搜索。
我的'helloworld.cpp‘文件如下所示
#include <iostream>
#include <vector>
#include <string>
//#include <blaze/Math.h>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the
C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
我的问题是,当我尝试包含此路径中的头文件时,for example Math.h Visual Studio抛出一个错误
blaze/Math.h: No such file or directory
但是当我右击include并点击"Go to Definition“VS Code时,它会打开文件。Optionbar和opened file。
日志诊断程序提供that information。
我猜有MinGW和其他VS代码包经验的人会非常简单地解决这个问题,但我几乎读过每个关于这些问题的帖子,都没有找到任何与我的问题相匹配的东西。
发布于 2020-11-01 12:32:15
好的,我拿到答案了。"c_cpp_properties.json“文件的包含路径仅用于IntelliSense。这意味着Visual Studio Code将找到这个包,并且IntelliSense将向您建议路径中的可用标头。这并不意味着编译器可以找到这些路径。因此,您必须将路径添加到"tasks.json“文件中。正如您在上面的"tasks.json“文件的照片中所看到的,有一个名为"args”的字段,它的意思是“参数”。这些是编译器参数。你也必须以"-I","C:/PathYouWishToAdd“的格式添加路径。这很好用!!
https://stackoverflow.com/questions/64589095
复制相似问题