[C.C++] 用VSCode开发C++项目

1207 0
Honkers 2025-5-12 15:27:37 来自手机 | 显示全部楼层 |阅读模式

写在前面

最近在新学C++,又不想用VisualStudio那么庞大的IDE,VS体量稍微有那么点笨重(主要还是因为穷,没钱换电脑,目前的电脑开个VS要个两三分钟,所以就懒得用VS了。嘻嘻!)。下面步入正题。
首先得明白VS只是一个编辑器,类似于记事本,本身是不能够进行任何程序语言开发的。只不过这个记事本可以安装插件,可以和命令行程序结合起来使用,使得它可以进行开发。那么在进行相应语言开发时自然少不了一顿相关配置操作。废话不多说,上步骤

准备工作

一、下载编译器

我这里使用的是mingw编译器。可参考VSCODE官方文档在Windows上使用GCC。

1、下载和安装MINGW编译器转至MSYS2网站。
我这里已经安装好了,就不再演示了。一定要记住安装路径,配置环境变量的时候会用上。一定要按照MYSY2网站上的安装提示安装,那些插件不知道哪些有用的就都安装上。

2、 配置环境变量
将Mingw-w64文件夹下的bin文件夹加入到系统环境变量中。下面以win10系统为例。

  • 打开设置-系统

  • 选择关于-高级系统设置

  • 点击环境变量

  • 选择Path-编辑

  • 点击新建,将mingw安装目录下的mingw64的bin文件夹路径添加到path中。

  • 点击确定,就完成了。

  • 最后确定一下mingw是否成功安装,命令行输入

  1. g++ --version
  2. gdb --version
复制代码

出现如下信息,则安装成功。

二、下载VSCODE

  • VSCODE已安装好,请到官网下载最新版

三、安装VSCODE C++相关插件

  • 点击VSCODE左侧扩展插件图标,在出现的搜索栏中输入“C++”,选择“C/C++”。

四、新建工程

1、新建项目文件夹及主程序

  • 在磁盘空间中新建一个test文件夹,右击选择用VSCODE打开。
  • 在test下建立4个文件夹,如下图:

    (build–放编译文件、include–放.h头文件、–lib放库文件、src–放源文件)
  • 在src文件夹下新建main.cpp输入helloworld程序。
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. cout<<"Hello!World!"<<endl;
  6. system("pause");
  7. return 0;
  8. }
复制代码

2、创建.vscode文件夹

.vscode文件夹包括三个json类型文件,分别为c_cpp_properties.json文件(编译器路径设置和智能提示设置)、task.json文件(编译说明)、launch.json文件(调试设置)。

创建c_cpp_properties.json
  • 按快捷键Ctrl+Shift+P打开命令搜索面板,选择“C/C++:编辑配置(UI)”,进入配置UI界面,并自动生成c_cpp_properties.json文件。

  • 编译器路径选择刚刚安装的g++.exe的路径,智能提示模式选择gcc-x64。如下图:

  • 在c_cpp_properties.json中添加includePath。如果不知道有哪些路径就将文章编译器安装路径下所有include文件夹全追加进去。
  • c_cpp_properties.json
创建Task.json文件
  • 点击工具栏–终端–配置默认生成任务–选择”C/C++:g++.exe生成活动文件“,以生成task.json文件。
  • 常用的Task.json文件如下。label为任务名,一般设置为build,command即选择什么编译器进行编译,一般选gcc或g++,args为编译的时候用到的参数,详细参数说明参考gcc/g++命令使用及编译原理一。
  1. {
  2. "version": "2.0.0",
  3. "tasks": [
  4. {
  5. "type": "cppbuild",
  6. "label": "C/C++: g++.exe 生成活动文件",
  7. "command": "G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\g++.exe",
  8. "args": [
  9. "-g",
  10. "${file}",
  11. "-fexec-charset=GBK", // 处理mingw中文编码问题
  12. "-finput-charset=UTF-8",// 处理mingw中文编码问题,没有这俩中文显示会乱码
  13. "-o",
  14. "${fileDirname}\\${fileBasenameNoExtension}.exe"
  15. ],
  16. "options": {
  17. "cwd": "${fileDirname}"
  18. },
  19. "problemMatcher": [
  20. "$gcc"
  21. ],
  22. "group": {
  23. "kind": "build",
  24. "isDefault": true
  25. },
  26. "detail": "编译器: G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\g++.exe"
  27. }
  28. ]
  29. }
复制代码
创建launch.json文件
  • 点击VSCODE左侧工具栏的调试按钮,点击“创建launch.json文件”。
  • 选择“C/C++(GDB/LLDB)”
  • 以下是我们常用到的launch.json文件。其中program参数,为生成的可执行文件名,一定要与tasks.json文件中指定生成的文件名相同。还有一个是preLaunchTask,一般也要与tasks.json文件中的label一致,一般都是build。如果采用CMakeLists.txt的方法,preLaunchTask参数就不用指定了,删除这个参数就行。但是program参数需要指定,指定的方式为绝对路径名。关于CMakeList的使用方法我还没搞懂,得再研究。
  1. {
  2. // 使用 IntelliSense 了解相关属性。
  3. // 悬停以查看现有属性的描述。
  4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {
  8. "name": "g++.exe - 生成和调试活动文件", // 配置名称,将会在启动配置的下拉菜单中显示
  9. "type": "cppdbg", // 配置类型,这里只能为cppdbg
  10. "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
  11. "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
  12. "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
  13. "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
  14. "cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
  15. "environment": [],
  16. "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
  17. "MIMode": "gdb",
  18. "miDebuggerPath": "G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\gdb.exe",// miDebugger的路径,注意这里要与MinGw的路径对应
  19. "setupCommands": [
  20. {
  21. "description": "为 gdb 启用整齐打印",
  22. "text": "-enable-pretty-printing",
  23. "ignoreFailures": true
  24. }
  25. ],
  26. "preLaunchTask": "C/C++: g++.exe 生成活动文件"// 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
  27. }
  28. ]
  29. }
复制代码

3、运行生成任务

第一次运行程序需先运行生成任务,生成可执行文件。具体操作如下:

  • 点击main.cpp,将其置于vscode主界面,使其成为活跃文件。
  • 点击工具栏 终端–运行生成任务。
  • 出现如下提示即为生成成功。

4、调试程序

同样需要将main.cpp置为活动文件,按F5或点击左侧小虫子图标。同VS一样打断点,在左侧监视窗口添加表达式以监视变量的值。

5、完成

至此VSCODE调试单个C++文件已成功。

五、多文件调试(引入自定义头文件)

  • 在include文件夹新建头文件“click.h”,代码如下:
  1. #include<string>
  2. using namespace std;
  3. string record();
复制代码
  • 在lib文件夹下新建实现文件“click.cpp”,代码如下:
  1. #include "click.h"
  2. #include <string>
  3. using namespace std;
  4. string record()
  5. {
  6. string str="中秋快乐!";
  7. return str;
  8. }
复制代码
  • 将main.cpp文件改为如下:
  1. #include <iostream>
  2. #include "click.h"
  3. using namespace std;
  4. int main()
  5. {
  6. cout<<"Hello!World!"<<endl;
  7. string str=record();
  8. cout<<str<<endl;
  9. system("pause");
  10. return 0;
  11. }
复制代码
  • 调试。会发现main.cpp中“click.h文件找不到。

  • 原因有二:
    一、c_cpp_properties.json文件中includePath未加入include文件夹的头文件包含路径,将"${workspaceFolder}/include/**"追加入includePath中。
    二、task.json文件中,未将include文件夹链接入编译,同时需将引用的头文件的源文件即cpp文件一起加入编译,即在args中加入如下两句:

  1. "-I","${workspaceFolder}/include",
  2. "${workspaceFolder}/lib/click.cpp",
复制代码

追加后的task.json

  1. {
  2. "version": "2.0.0",
  3. "tasks": [
  4. {
  5. "type": "cppbuild",
  6. "label": "C/C++: g++.exe 生成活动文件",
  7. "command": "G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin/g++.exe",
  8. "args": [
  9. "-g",
  10. "${file}",
  11. "-fexec-charset=GBK", // 处理mingw中文编码问题
  12. "-finput-charset=UTF-8",// 处理mingw中文编码问题,没有这俩中文显示会乱码
  13. "-I","${workspaceFolder}/include",
  14. "${workspaceFolder}/lib/click.cpp",
  15. "-o",
  16. "${fileDirname}\\${fileBasenameNoExtension}.exe"
  17. ],
  18. "options": {
  19. "cwd": "G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin"
  20. },
  21. "problemMatcher": [
  22. "$gcc"
  23. ],
  24. "group": {
  25. "kind": "build",
  26. "isDefault": true
  27. },
  28. "detail": "编译器: G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin/g++.exe"
  29. }
  30. ]
  31. }
复制代码
  • 切换到main.cpp,程序完美运行。如此,方能进行自定义头文件的引用。

六、附录(路径表示说明)

在vscode中定义了一些变量,在配置任务脚本时,可能会用到。本文以launch.json脚本为例,介绍各个变量的含义。

假设当前workspace的路径为:“C:\Users\admin\Desktop\test”,workspace文件夹下的结构如下(+表示下一层):

C:\Users\admin\Desktop\test

+.vscode

++tasks.json

++launch.json

+main.cpp

${workspaceFolder} :表示当前workspace文件夹路径,也即C:\Users\admin\Desktop\test

${workspaceRootFolderName}:表示workspace的文件夹名,也即test

${file}:文件自身的绝对路径,也即C:\Users\admin\Desktop\test.vscode\launch.json

${relativeFile}:文件在workspace中的路径,也即.vscode\launch.json

${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即launch

${fileBasename}:当前文件的文件名,launch.json

${fileDirname}:文件所在的文件夹路径,也即C:\Users\admin\Desktop\test.vscode

${fileExtname}:当前文件的后缀,也即.json

${lineNumber}:当前文件光标所在的行号

${env:PATH}:系统中的环境变量

参考:1、Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(Windows)【真正的小白版】
2、使用vscode创建C++工程
3、Windows下用VScode编写C++程序如何添加并应用自定义头文件
4、VSCode launch.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等
5\VSCODE官方文档—在MinGW上使用GCC(Using GCC with MinGW)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行