最近在新学C++,又不想用VisualStudio那么庞大的IDE,VS体量稍微有那么点笨重(主要还是因为穷,没钱换电脑,目前的电脑开个VS要个两三分钟,所以就懒得用VS了。嘻嘻!)。下面步入正题。
首先得明白VS只是一个编辑器,类似于记事本,本身是不能够进行任何程序语言开发的。只不过这个记事本可以安装插件,可以和命令行程序结合起来使用,使得它可以进行开发。那么在进行相应语言开发时自然少不了一顿相关配置操作。废话不多说,上步骤
我这里使用的是mingw编译器。可参考VSCODE官方文档在Windows上使用GCC。
1、下载和安装MINGW编译器转至MSYS2网站。
我这里已经安装好了,就不再演示了。一定要记住安装路径,配置环境变量的时候会用上。一定要按照MYSY2网站上的安装提示安装,那些插件不知道哪些有用的就都安装上。
2、 配置环境变量
将Mingw-w64文件夹下的bin文件夹加入到系统环境变量中。下面以win10系统为例。
点击确定,就完成了。
最后确定一下mingw是否成功安装,命令行输入
g++ --version
gdb --version
#include
using namespace std;
int main()
{
cout<<"Hello!World!"<<endl;
system("pause");
return 0;
}
.vscode文件夹包括三个json类型文件,分别为c_cpp_properties.json文件(编译器路径设置和智能提示设置)、task.json文件(编译说明)、launch.json文件(调试设置)。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-fexec-charset=GBK", // 处理mingw中文编码问题
"-finput-charset=UTF-8",// 处理mingw中文编码问题,没有这俩中文显示会乱码
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\g++.exe"
}
]
}
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\gdb.exe",// miDebugger的路径,注意这里要与MinGw的路径对应
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"// 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
}
]
}
第一次运行程序需先运行生成任务,生成可执行文件。具体操作如下:
同样需要将main.cpp置为活动文件,按F5或点击左侧小虫子图标。同VS一样打断点,在左侧监视窗口添加表达式以监视变量的值。
至此VSCODE调试单个C++文件已成功。
#include
using namespace std;
string record();
#include "click.h"
#include
using namespace std;
string record()
{
string str="中秋快乐!";
return str;
}
#include
#include "click.h"
using namespace std;
int main()
{
cout<<"Hello!World!"<<endl;
string str=record();
cout<<str<<endl;
system("pause");
return 0;
}
原因有二:
一、c_cpp_properties.json文件中includePath未加入include文件夹的头文件包含路径,将"${workspaceFolder}/include/**"追加入includePath中。
二、task.json文件中,未将include文件夹链接入编译,同时需将引用的头文件的源文件即cpp文件一起加入编译,即在args中加入如下两句:
"-I","${workspaceFolder}/include",
"${workspaceFolder}/lib/click.cpp",
追加后的task.json
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin/g++.exe",
"args": [
"-g",
"${file}",
"-fexec-charset=GBK", // 处理mingw中文编码问题
"-finput-charset=UTF-8",// 处理mingw中文编码问题,没有这俩中文显示会乱码
"-I","${workspaceFolder}/include",
"${workspaceFolder}/lib/click.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin/g++.exe"
}
]
}
在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)