登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: Visual Studio Code (vscode) 配置 C / C++ 环境[zt]     [回主站]     [分站链接]
Visual Studio Code (vscode) 配置 C / C++ 环境[zt]
clq
浏览(286) - 2021-09-12 15:43:30 发表 编辑

关键字:

[2022-01-02 15:08:30 最后更新]

//----------------------------------------------------------------
//配置 vscode https://www.cnblogs.com/bpf-1024/p/11597000.html
//cfree 5 自带的 gcc 还是不行。还是照文档的下载吧。
//不过这只是单文件的,多文件可能是要用 cmake 类型的


//----------------------------------------------------------------
昨天突发奇想,想使用vscode配置C++环境,因为不想下载 Dev OR codeblock,然后借助了很多网上教程,用了昨天整整一下午的时间最后终于成功了(哈哈哈哈哈……)。今天跟大家分享一下~~~

 因为还只是个编程小白,参考资料有点多 ↓ ↓ ↓

官方文档 —— 参考配置过程
CSDN原创文章 —— 参考主要配置过程
知乎达人 —— 参考环境准备



 ➺➻➸ 主要流程:

1. 下载VScode

2. 安装cpptools工具

3. 下载MinGW

4. 配置环境变量

5. 使用简单的.cpp文件配置C++环境

6. 运行



 ➺➻➸ 详细解读:
1. 下载VScode

下载链接:https://code.visualstudio.com/Download

安装过程:一路下一步,安装很简单,安装路径看个人
2. 安装cpptools工具

打开vscode,按照以下步骤安装

3. 下载MinGW

下载地址:https://sourceforge.net/projects/mingw-w64/files/

下载的文件:进入网站后不要点击 "Download Lasted Version",往下滑,找到最新版的 "x86_64-posix-seh"。

安装MinGW:下载后是一个7z的压缩包,解压后移动到你想安装的位置即可。我的安装位置是:D:\2Software\mingw64
4. 配置环境变量

配置对象:MinGW,所以把你刚刚安装MinGW的路径拷贝一下

配置环境变量:在此以win10为例,到达第6步之后,前面打开的窗口都要按下确定,否则会失败。

【注】:win7需要添加路径,不要覆盖了。万一真的覆盖了,点击取消重来一遍,只要不点确定,啥都好说 ^o^

  配置好环境变量后最好重启一下 VScode ^V^

  ❁❁❁ 验证一下环境变量是否配置成功

按下 win + R,输入cmd,回车键之后输入g++,再回车,如果提示以下信息[1],则环境变量配置成功。如果提示以下信息[2],则环境变量配置失败。

[1]:g++: fatal error: no input files

[2]:'g++' 不是内部或外部命令,也不是可运行的程序或批处理文件。

5. 使用简单的.cpp文件配置C++环境

  (1)新建空文件夹Code

  (2)打开VScode --> 打开文件夹 --> 选择刚刚创建的文件夹Code

  (3)新建test.cpp文件(以最简单的 HelloWorld.cpp 为例)
复制代码

#include
#include
int main()
{
printf("Hello World\n");
system("pause");
return 0;
}

复制代码

  (4)进入调试界面添加配置环境,选择 C++(GDB/LLDB),再选择 g++.exe,之后会自动生成 launch.json 配置文件

  (5)编辑 launch.json 配置文件
复制代码

1 {
2 "version": "0.2.0",
3 "configurations": [
4 {
5 "name": "g++.exe build and debug active file",
6 "type": "cppdbg",
7 "request": "launch",
8 "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
9 "args": [],
10 "stopAtEntry": false,
11 "cwd": "${workspaceFolder}",
12 "environment": [],
13 "externalConsole": true, //修改此项,让其弹出终端
14 "MIMode": "gdb",
15 "miDebuggerPath": "D:\\2Software\\mingw64\\bin\\gdb.exe",
16 "setupCommands": [
17 {
18 "description": "Enable pretty-printing for gdb",
19 "text": "-enable-pretty-printing",
20 "ignoreFailures": true
21 }
22 ],
23 "preLaunchTask": "task g++" //修改此项
24 }
25 ]
26 }

复制代码

  (6)返回.cpp文件,按F5进行调试,会弹出找不到任务"task g++",选择 "配置任务",会自动生成 tasks.json 文件

  (7)编辑 tasks.json 文件
复制代码

1 {
2 "version": "2.0.0",
3 "tasks": [
4 {
5 "type": "shell",
6 "label": "task g++", //修改此项
7 "command": "D:\\2Software\\mingw64\\bin\\g++.exe",
8 "args": [
9 "-g",
10 "${file}",
11 "-o",
12 "${fileDirname}\\${fileBasenameNoExtension}.exe"
13 ],
14 "options": {
15 "cwd": "D:\\2Software\\mingw64\\bin"
16 },
17 "problemMatcher": [
18 "$gcc"
19 ],
20 "group": "build"
21 }
22 ]
23 }

复制代码

【注】: launch.json 文件中 "preLaunchTask" 的值 必须与 tasks.json 文件中 "label"的值一致。值的设置看个人喜好,保持默认也是OK的。
6. 运行

  返回 HelloWorld.cpp 文件,按F5调试,发现完全OK了!




clq  2021-09-12 23:33:58 发表 编辑

官方文档
https://code.visualstudio.com/docs/cpp/config-mingw

clq  2021-09-12 23:41:33 发表 编辑

https://www.pcyo.cn/linux/20181212/216.html


MingGW64 版本区别于各版本说明
2018-12-12 Linux 阅读(9867) 评论(2)
背景

下载地址:https://sourceforge.net/projects/mingw-w64 最新版是8.1.0
文件清单

x86_64-posix-sjlj
x86_64-posix-seh
x86_64-win32-sjlj
x86_64-win32-seh
i686-posix-sjlj
i686-posix-dwarf
i686-win32-sjlj
i686-win32-dwarf

释义1:

DWARF:一种带调试信息(DWARF- 2(DW2)EH)的包, 所以比一般的包尺寸大,仅支持32位系统
SJLJ:跨平台,支持32,64位系统,缺点是:运行速度稍慢,GCC不支持
SEH: 调用系统机制处理异常,支持32,64位系统,缺点是:Gcc不支持(即将支持)

释义2:

x86_64: 简称X64,64位操作系统
i686: 32位操作系统 (i386的子集),差不多奔腾2(1997年5月)之后的CPU都是可以用的;

释义3:

posix: 启用了C++ 11 多线程特性
win32: 未启用 (从时间线上正在尝试也启用部分 Threading)

区别

DWARF DWARF- 2(DW2)EH ,这需要使用DWARF-2(或DWARF-3)调试信息。 DW-2 EH可以导致可执行文件略显膨胀,因为大的调用堆栈解开表必须包含在可执行文件中。
setjmp / longjmp(SJLJ)。基于SJLJ的EH比DW2 EH慢得多(在没有异常时会惩罚甚至正常执行),但是可以在没有使用GCC编译的代码或没有调用堆栈的代码上工作。
结构化异常处理(SEH) (Structured Exception Handling)Windows使用自己的异常处理机制。



clq  2022-01-02 15:08:30 发表 编辑

原文档中用了很多 ${fileDirname} 的环境变量。实际使用下来,换成 ${workspaceFolder} 更方便,不然如果源码中有子目录的话编译时还要切换到主目录中。
各个环境变量的说明如下

https://www.cnblogs.com/songhaibin/p/14017141.html

----------------------------------------------------------------
VS Code Tasks.json 内置变量

支持下面的预定义变量:

${workspaceFolder} - 当前工作目录(根目录)
${workspaceFolderBasename} - 当前文件的父目录
${file} - 当前打开的文件名(完整路径)
${relativeFile} - 当前根目录到当前打开文件的相对路径(包括文件名)
${relativeFileDirname} - 当前根目录到当前打开文件的相对路径(不包括文件名)
${fileBasename} - 当前打开的文件名(包括扩展名)
${fileBasenameNoExtension} - 当前打开的文件名(不包括扩展名)
${fileDirname} - 当前打开文件的目录
${fileExtname} - 当前打开文件的扩展名
${cwd} - 启动时task工作的目录
${lineNumber} - 当前激活文件所选行
${selectedText} - 当前激活文件中所选择的文本
${execPath} - vscode执行文件所在的目录
${defaultBuildTask} - 默认编译任务(build task)的名字

预定义变量示例:

假设你满足以下的条件

一个文件 /home/your-username/your-project/folder/file.ext 在你的编辑器中打开;
一个目录 /home/your-username/your-project 作为你的根目录.

下面的预定义变量则代表:

${workspaceFolder} - /home/your-username/your-project
${workspaceFolderBasename} - your-project
${file} - /home/your-username/your-project/folder/file.ext
${relativeFile} - folder/file.ext
${relativeFileDirname} - folder
${fileBasename} - file.ext
${fileBasenameNoExtension} - file
${fileDirname} - /home/your-username/your-project/folder
${fileExtname} - .ext
${lineNumber} - 光标所在行
${selectedText} - 编辑器中所选择的文本
${execPath} - Code.exe的位置

Tip: vscode的智能提示会在tasks.json和launch.json 提示所有支持的预定义变量.



总数:3 页次:1/1 首页 尾页  
总数:3 页次:1/1 首页 尾页  


所在合集/目录
vscode 更多
vscode c++ 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1