博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VS Code编译C/C++
阅读量:2028 次
发布时间:2019-04-28

本文共 4084 字,大约阅读时间需要 13 分钟。

C/C++环境的配置要比python的复杂许多,好几个配置文件要写。

一、编译C/C++的环境一般都是集成在我们的编辑器中的,如果电脑上有codeblock和dev c++的读者可以去安装路径下找找MinGW文件夹,可以不用重复下载。而没有的读者则需要下载
这里写图片描述
二、配置环境变量,这里就不重复截图了,下面的是python配置环境变量的步骤,而这里只要找到我们的MinGW文件夹下的bin目录(我的是D:\MinGW\mingw64\bin),将其添加进去即可。
这里写图片描述
三、打开VS Code,添加两个插件,记得都要重新加载或者重启VS Code一次
这里写图片描述
四、打开自己的项目,这里以Hello World为例。

#include 
using namespace std;int main() { cout << "Hello World"; return 0;}

打开之后我们发现,头文件出现了绿色的波浪线,这配置C/C++也是常见的问题之一,这是由于找不到头文件导致的

这里写图片描述
我们点击边上的橙色小灯泡,选择“Edit ‘includePath’ setting”,之后会创建一个文件夹.vscode(这个文件夹存放了配置文件),文件夹中有c_cpp_properties.json这个文件。
这个文件是json的格式,其中configurations参数下有三个元素,分别是Mac、Linux、Win32,我们根据自己的情况修改相应的配置文件。下面以Win32为例,找到相应includePath参数。

{            "name": "Win32",            "includePath": [                "${workspaceFolder}"            ],            "defines": [                "_DEBUG",                "UNICODE",                "_UNICODE"            ],            "intelliSenseMode": "msvc-x64",            "browse": {                "path": [                    "${workspaceFolder}"                ],                "limitSymbolsToIncludedHeaders": true,                "databaseFilename": ""            },            "cStandard": "c11",            "cppStandard": "c++17"        }

要添加的内容需要我们打开我们的cmd,执行**gcc -v -E -u c++ -**这个命令,找到调用g++我们需要用到的文件路径,内容很多,我们找到最下面的路径部分。

这里写图片描述
将这些参数添加到includePath后面,中间用逗号隔开,修改之后如下。细心的读者会发现上面只有3条记录,为什么下面的参数我写了5条,这是因为当你添加完cmd中输出的内容之后,保存配置文件,查看自己的C++文件时,绿色波浪线仍然没有消失,这里我们可以再次点击小灯泡,VS Code会继续补全我们的路径。之后绿色波浪线消失,说明我们编译路径已经配置完成。

{            "name": "Win32",            "includePath": [                "${workspaceFolder}",                "D:/MinGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/include",                "D:/MinGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/include-fixed",                "D:/MinGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/include",                "D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",                "D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/x86_64-w64-mingw32"            ],            "defines": [                "_DEBUG",                "UNICODE",                "_UNICODE"            ],            "intelliSenseMode": "msvc-x64",            "browse": {                "path": [                    "${workspaceFolder}"                ],                "limitSymbolsToIncludedHeaders": true,                "databaseFilename": ""            },            "cStandard": "c11",            "cppStandard": "c++17"        }

五、打开C++文件,我们按F5或者找到调试执行,之后将显示我们没有launch.json文件,VS Code会继续为我们创建一个文件,我们可以将launch.json文件的内容删除,并下面的代码完全复制进去。注意:复制进去之后要修改miDebuggerPath参数,这里面填写自己的gdb.exe路径,至此我们的编译配置已完成。

{    "version": "0.2.0",    "configurations": [                {            "name": "C++ Launch (GDB)",                             "type": "cppdbg",                                       "request": "launch",                                    "targetArchitecture": "x86",                            "program": "${file}.exe",                               "miDebuggerPath":"D:\\MinGW\\mingw64\\bin\\gdb.exe",             "args": [],                 "stopAtEntry": false,                                   "cwd": "${workspaceRoot}",                              "externalConsole": true,                                "preLaunchTask": "g++"                            }    ]}

六、Ctrl+Shift+P,输入Tasks:Configure Task,之后选择使用模板创建tesks.json文件

这里写图片描述
同样覆盖源文件,填入下面的内容,用来配置编译命令

{    // See https://go.microsoft.com/fwlink/?LinkId=733558    // for the documentation about the tasks.json format    "version": "2.0.0",    "command": "g++",    "args": ["-g","${file}","-o","${file}.exe"],    // 编译命令    "problemMatcher": {        "owner": "cpp",        "fileLocation": ["relative", "${workspaceRoot}"],        "pattern": {            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",            "file": 1,            "line": 2,            "column": 3,            "severity": 4,            "message": 5        }    }}

七,按F5即可执行,但是这里有一个小问题本人还没有解决,就是console控制台只闪出来一下,不能观察到结果,我目前的解决办法是在return 0之前增加一句system("pause"),缺点在于每个文件都要写,不知道有没有更好的办法。

你可能感兴趣的文章
供应链SCOR模型搭建/改进
查看>>
分析:知识经济时代企业CIO职能转变
查看>>
关于开心网的服务器
查看>>
中国科大与中科院数学院全面合作并创办"华罗庚班"
查看>>
开心网(kaixin001.com)服务器架构的一点猜想
查看>>
抓虾网的架构
查看>>
架构设计之性能设计经验
查看>>
淘宝自主研发的系统
查看>>
Web架构设计的几个心得
查看>>
大型网站架构不得不考虑的问题
查看>>
SNS和互联网,一些可能未必意识到的事
查看>>
开发者不可不知的PHP框架深度解析
查看>>
Linux Network Load Balance(Linux下实现负载均衡)
查看>>
我对CTO的理解 CTO要有技术魅力
查看>>
CIO应用商业智能技术系统的重构思考
查看>>
怎样做一个优秀的系统分析师
查看>>
基于SOA的商业智能平台的研究与设计
查看>>
比尔·盖茨:我们被摩尔定律忽悠了
查看>>
值类型与引用类型初窥
查看>>
[置顶]高并发高流量网站架构
查看>>