https://www.jb51.net/article/183519.htm
https://www.zhihu.com/question/30315894
https://www.jianshu.com/p/febbf1e975b6
网址:https://sourceforge.net/projects/mingw-w64/files/(选择新版本的x86_64-posix-seh)
各个gcc版本区别传送门:https://www.cnblogs.com/fanbi/p/10309800.html
我的电脑→属性→高级系统设置→环境变量→系统变量→PATH编辑→把mingw路径下的include、lib、bin文件夹路径添加进去
在工程文件夹下创建".vscode"文件夹,然后在.vscode文件夹下创建c_cpp_properties.json、launch.json、tasks.json文件
{
"configurations": [
{
"name": "Win32",
"includePath": [
"C:/mingw64/include/**",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"compilerPath": "C:\\mingw64\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x86"
}
],
"version": 4
}
//该文件负责配置VS Code。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录 workspaceRoot已被弃用,现改为workspaceFolder
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
]
}
]
}
//该文件文件来告诉VS Code如何构建(编译)程序。
{
"version": "2.0.0",
"command": "g++",
"args": [
"-g",
"${fileDirname}\\*.cpp", //多文件编译使用 "${fileDirname}\\*.cpp",单文件编译时改写为"${file}"
"-o",
"${fileBasenameNoExtension}.exe"
], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
/*
单文件编译时,在tasks.json中,将"${fileDirname}\\*.cpp" 改写为"${file}"。同一个文件夹下可以有多个cpp文件包含main()函数。
多文件编译使用"${fileDirname}\\*.cpp",同一个文件夹下只能有一个main()函数。使用"${fileDirname}\\*.cpp"选项后,vscode可以编译c++的小工程。需要做大项目或者进行专业的工作,建议使用make和Makefile或者visual studio。
*/
//该文件文件来告诉VS Code如何构建(编译)程序。
{
"version": "2.0.0",
"command": "g++",
"args": [
"-g",
"${fileDirname}\\cpp\\*.cpp", // 这里是另外一个文件的目录
"${fileDirname}\\*.cpp", //多文件编译使用 "${fileDirname}\\*.cpp",单文件编译时改写为"${file}"
"-o",
"${fileBasenameNoExtension}.exe"
], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
/*
单文件编译时,在tasks.json中,将"${fileDirname}\\*.cpp" 改写为"${file}"。同一个文件夹下可以有多个cpp文件包含main()函数。
多文件编译使用"${fileDirname}\\*.cpp",同一个文件夹下只能有一个main()函数。使用"${fileDirname}\\*.cpp"选项后,vscode可以编译c++的小工程。需要做大项目或者进行专业的工作,建议使用make和Makefile或者visual studio。
*/
// 路径:./
#include
#include
#include"C:\coding tools\VSCode code\header\prin.h"
int main()
{
prin();
system("pause");
return 0;
}
// 路径:./header/
#pragma once
#include
#include
using namespace std;
void prin();
// 路径:./cpp/
#include"C:\coding tools\VSCode code\header\prin.h"
void prin()
{
cout << "test ok!!!" << endl;
}
command:编译器路径
args:传递给编译器的参数
$ {workspaceFolder} - 在VS Code中打开的文件夹的路径
$ {workspaceFolderBasename} -VS代码中打开的文件夹的名称,没有任何斜杠(/)
$ {file} - 当前打开的文件
$ {relativeFile} -当前打开的文件相对于workspaceFolder
$ {fileBasename} - 当前打开文件的基本名称
${fileBasenameNoExtension} - 当前打开文件的基本名称,没有文件扩展名
$ {fileDirname} -当前打开文件的目录名
$ {fileExtname} - 当前打开文件的扩展名
$ {cwd} - 任务运行器在启动时的当前工作目录
$ {lineNumber} - 活动文件中当前选定的行号
$ {selectedText} - 活动文件中当前选定的文本