DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
安装准备
(1)安装Visual Studio Code;
(2)安装 C/C++扩展插件; 
(3)下载安装mingw-W64;
(4)设置添加环境变量 ;
(5)检查确认mingw-w64的安装 
创建Hello World工程
(1)添加源代码;
(2)编译helloworld.cpp;
(3)调试helloworld.cpp;
(4)C/C++配置;

安装准备

在本篇开始之前,需要完成以下准备:

(1)安装Visual Studio Code;

上一篇文章已经介绍了VSCode软件的下载安装,这里就不介绍了;

(2)安装 C/C++扩展插件;

上一篇文章已经介绍了扩展插件的安装,这里就不介绍了;

在扩展商店搜索到的C/C++扩展插件如下图所示;

 

87373bb015971de15b4aa6288cb1819e.png

(3)下载安装mingw-W64

可以通过mingw-w64官网(http://www.mingw-w64.org)或SourceForge网站下载mingw-w64;

mingw-w64在sourceforge网站的下载链接为:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/

在sourceforge网站找到mingw的下载页面,看到MinGW-w64-for 32 and 64 bit Windows,如下图所示;

 

33a862d8f3b2d0e4e3c52cfaf3e159b5.png

拖动网页滚动条到最下方,找到下图所示的内容。

 

8e9d56539c08c77362d022c87353fff3.png

MinGW-W64 Online Installer:这里的MinGW-W64-install.exe文件不是完整的安装包,需要联网下载安装包(这里暂不介绍);

MinGW-W64 GCC-8.1.0:这里可以下载到mingw-w64的离线安装包;此处选择GCC-8.1.0中的x86_64-win32-seh;

下载的文件为x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z压缩包,将解压后的文件夹放到电脑中某个位置,比如放到D:Program Filesmingw-w64文件夹中,那么bin文件夹所在的完整路径就是D:Program Filesmingw-w64x86_64-8.1.0-release-win32-seh-rt_v6-rev0bin;

(注意:一些开发工具的路径文件夹中最好不要有空格,我这里Program Files中是有空格,但不影响mingw-w64使用)

(4)设置添加环境变量

需要在电脑的环境变量中添加mingw-w64的bin文件夹路径。

在电脑的Windows图标(开始图标)上右键,点击设置,如下图所示;

 

bb9d7b0a46501cd029901e4199aa3ddc.png

在Windows设置的搜索框中,搜索环境变量,点击编辑系统环境变量;

 

529ed8f7b075935427d7c56df2ca8fc3.png

在弹出的对话框中点击环境变量;(也可以右键“此电脑”→属性→高级系统设置,弹出此对话框)

 

f04495c36bdd248810294d610979d1d0.png

在系统环境变量中,选中Path,点击编辑;

 

d6c69dff3a6653cd0104e8cbde56d0d1.png

然后,点击新建,将mingw-w64的bin文件夹完整路径(D:Program Filesmingw-w64x86_64-8.1.0-release-win32-seh-rt_v6-rev0bin)添加进去,点击确定。

 

bf4d14a6dbda8df1b8508d18eaad6328.png

(5)检查mingw-w64的安装

为了检查mingw-w64是否正确安装和可用,打开cmd窗口,分别输入下面两条指令:

g++ --version
gdb --version

显示下图所示界面,表示安装正确,并且可以正常使用。

 

1932f3fb56aea37e3fa04f0c64dbf488.png

创建Hello World工程

(1)添加源代码

可以在你的电脑某个位置,创建一个文件夹(比如Projects_VSCode),专门存放VSCode工程文件。在Projects_VSCode文件夹中,创建一个子文件夹helloworld。

打开VSCode软件,依次点击菜单栏 文件→打开文件夹,找到并选中helloworld文件夹,点击选择文件夹;可以在资源管理器中看到打开的helloworld文件夹,此时里面没有任何文件;

在helloworld右侧,点击新建文件按钮,并命名为helloworld.cpp;

 

b4a4b6baba41087e3f62de699fcfcf21.png

将以下代码添加到源文件中,并保存文件;

#include <iostream>
#include <vector>
#include <string>
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;
}

 

bf807096628b9d37bd67eb14eb9b573a.png

(2)编译helloworld.cpp

这一步将会创建tasks.json文件,告诉VSCode怎么编译程序;

在菜单栏,依次点击终端→配置默认生成任务,在弹出的选择框中选择g++.exe build active file,将会自动创建.vscode文件夹和tasks.json文件;

 

20fd7865eafb8cbbaa1ae68f335b7f70.png

 

b85b5a72da2b520492d11628816ed471.png

 

2f0743db8a5055f2be2b192e9735e9dc.png

创建的tasks.json文件内容如下所示;

{
 "version": "2.0.0",
 "tasks": [
 {
 "type": "shell",
 "label": "C/C++: g++.exe build active file",
 "command": "D:Program Filesmingw-w64x86_64-8.1.0-release-win32-seh-rt_v6-rev0bing++.exe",
 "args": [
 "-g",
 "${file}",
 "-o",
 "${fileDirname}${fileBasenameNoExtension}.exe"
 ],
 "options": {
 "cwd": "D:Program Filesmingw-w64x86_64-8.1.0-release-win32-seh-rt_v6-rev0bin"
 },
 "problemMatcher": [
 "$gcc"
 ],
 "group": {
 "kind": "build",
 "isDefault": true
 }
 }
 ]
}

回到helloworld.cpp文件,在菜单栏依次点击 终端→运行生成任务,或者使用快捷键Ctrl+Shift+B;

编译完成后,在源代码下方弹出的终端窗口中,会显示编译是否成功的信息;如下图所示;

 

ec1e21af76eaf3e0abe98a6fbdfa0e9d.png

在终端窗口右侧点击+按钮,在新的终端窗口中输入dir,可以看到helloworld文件夹中生成了helloworld.exe文件;

输入.helloworld.exe执行文件,窗口中显示出程序运行的结果;

 

1b265b35c158c3c17a57d48f23bfb9c7.png

(3)调试helloworld.cpp

这一步将会自动生成launch.json文件,可以配置VSCode启动GDB调试器;

依次点击菜单栏 运行→添加配置,选择C++(GDB/LLDB);

在弹出的下拉选项中,选择g++.exe - 生成和调试活动文件;

VSCode将会自动生成launch.json文件;

 

7f3c32c67901ab2643834036df2f22b1.png

 

4cd60a5650f7ce262a1dba20aea8cdcb.png

 

8c2f5a4a05c5da4e9a938edf3e5207a3.png

 

5f190f1ffafb04e5da4c9666b793d0de.png

生成的launch.json文件里的内容,如下所示;

{
 // 使用 IntelliSense 了解相关属性。 
 // 悬停以查看现有属性的描述。
 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
 "version": "0.2.0",
 "configurations": [
 {
 "name": "g++.exe - 生成和调试活动文件",
 "type": "cppdbg",
 "request": "launch",
 "program": "${fileDirname}${fileBasenameNoExtension}.exe",
 "args": [],
 "stopAtEntry": false,
 "cwd": "${workspaceFolder}",
 "environment": [],
 "externalConsole": false,
 "MIMode": "gdb",
 "miDebuggerPath": "D:Program Filesmingw-w64x86_64-8.1.0-release-win32-seh-rt_v6-rev0bingdb.exe",
 "setupCommands": [
 {
 "description": "为 gdb 启用整齐打印",
 "text": "-enable-pretty-printing",
 "ignoreFailures": true
 }
 ],
 "preLaunchTask": "g++.exe build active file"
 }
 ]
}

回到helloworld.cpp文件,这样helloworld.cpp就是活动文件;

依次点击菜单栏 运行→启动调试,或者使用快捷键F5;

在下面的终端窗口中,将会出现调试的信息;

 

0c4416b37228f4916cc021ec3c40895e.png

这时程序里没有打上任何断点,可以在源文件某一行代码的前面打上断点,可以单步调试程序;

可以将launch.json文件中的stopAtEntry修改为true,那么调试程序时,将会在main函数入口打上断点,自动停止;

在窗口上方,也可以看到调试的按钮,如下图所示;

在窗口左侧有变量、监视的窗口,在监视一栏中可以添加关注的变量;

 

6b31f5d6bb3a489ca323325db07ebbd5.png

(4)C/C++配置

使用快捷键Ctrl'+Shift+P,打开命令面板;

在命令面板中,输入并选中C/C++ 编辑配置(UI),将会弹出C/C++配置页面;

 

e3e880621f4629cae3268d222850b8a6.png

在C/C++配置页面,选择配置名称:Win32,编译器路径:D:/Program Files/mingw-w64/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/bin/gcc.exe;

配置完成后,点击资源管理器,可以看到在.vscode文件夹中自动生成了c_cpp_properties.json文件;

 

6fb0d262e8a162ca38dd878bc8dbf58d.png

c_cpp_properties.json文件中的内容如下所示;

{
 "configurations": [
 {
 "name": "Win32",
 "includePath": [
 "${workspaceFolder}/**"
 ],
 "defines": [
 "_DEBUG",
 "UNICODE",
 "_UNICODE"
 ],
 "compilerPath": "D:/Program Files/mingw-w64/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/bin/gcc.exe",
 "cStandard": "c11",
 "cppStandard": "c++17",
 "intelliSenseMode": "clang-x64"
 }
 ],
 "version": 4
}

如果程序中使用的头文件不在工作空间或标准头文件的路径中,可以在Include path中添加搜索的路径;

至此,使用VSCode对程序的编译、调试介绍完了,并且根据配置步骤,自动生成了相应的配置文件taks.json、launch.json、c_cpp_properties.json。

posted on   DoubleLi  阅读(3004)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2013-04-25 2009-11-13 08:37 实现文件读写操作的几种方法
2013-04-25 C++的头文件和实现文件分别写什么
2013-04-25 C++头文件编译问题
点击右上角即可分享
微信分享提示