目录
DES:
Steps
11.配置launch.json
12.tasks.json
13. c_cpp_properties.json
补充:使用第三方库
总结&笔记:
背景知识
ref
DES:
安装配置VS code C++ 编译器,运行helloworld
Steps
1.VS Code
2. 下载安装MinGW-w64
3. 打开vpn连接,启动安装
4.安装完启动,左侧all package,选择
- mingw32-gcc.bin(c语言文件编译器)
- mingw32-gcc-g++.bin(c++语言编译器)
- mingw32-gdb.bin(调试编译后文件)
或者直接选择相应的编译配置,注意看description
5.选择好后选择applychange,等待下载完毕
6.配置环境变量:
右键我的电脑->属性->右边栏高级系统设置
环境变量->
系统变量->path->编辑->
选择MinGW/bin->确定
重启电脑
7.验证
打开cmd 输入g++ -v
有出现版本信息
则安装成功
8.打开vscode,下载c++插件
9.创建.cpp文件,helloworld
10.按快捷键Ctrl+Shift+P调出命令面板,输入C/C++,选择“Edit Configurations(UI)
修改地址
11.配置launch.json
左边栏选择运行和调试->launch.json
launch.json 是用于运行 ( run ) 和调试 ( debug ) 的配置文件,可以指定语言环境,指定调试类型等等内容。
{
"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}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "D:/MinGW/bin/gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
12.tasks.json
tasks.json 是在 vscode 中辅助程序编译的模块,可以代你执行类似于在命令行输入 “gcc hello.c -o hello” 命令的操作,你只要在图形界面下操作即可生成可执行文件。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",//默认配置,实质为在win的端口使用shell命令
"label": "g++",//任务的名称,可以修改,但一定要和launch中的"preLaunchTask"项保持一致
"command": "D:/MinGw/bin/g++.exe",//
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-std=c++17"//支持C++17的版本
],
"options": {
"cwd": "D:/MinGw/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: D:/MinGw/bin/g++.exe"//一些描述性信息
}
]
}
13. c_cpp_properties.json
c_cpp_properties.json 主要用来设置包含头文件的路径,设置 C/C++ 支持的版本号等等
{
"configurations": [
{
"name": "Win32", // 配置名称可随意更改
"includePath": [ //运行项目包含.h头文件的目录,
"${workspaceFolder}/**"
//此处会匹配工作文件下的所有文件
], //添加"compilerPath"后,系统include路径可不写明
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:/MinGw/bin/g++.exe",//编译器的路径
"cStandard": "c17",//C标准的版本
"cppStandard": "c++17",//C++标准的版本
"intelliSenseMode": "${default}"
}
],
"version": 4
}
14.按F5启动编译和运行
运行结果
补充:使用第三方库
在vscode使用中如果想使用自定义的函数库或者第三方库需要对tasks和c_cpp_properties.json中的路径进行配置。
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32", // 配置名称可随意更改
"includePath": [ //运行项目包含.h头文件的目录,在此处添加外部头文件路径
"${workspaceFolder}/**",
"C:/test" //外部路径
//此处会匹配工作文件下的所有文件
], //添加"compilerPath"后,系统include路径可不写明
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:/MinGw/bin/g++.exe",//编译器的路径
"cStandard": "c17",//C标准的版本
"cppStandard": "c++17",//C++标准的版本
"intelliSenseMode": "${default}"
}
],
"version": 4
}
tasks.json
使用 “-I” include 头文件以及源文件路径(若函数定义与声明不在一起)。
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++build",
"command": "D:/MinGw/bin/g++.exe",
"args": [
"-g",
"${file}",
"-I",//引入外部头文件
"F:\\C++\\headfile",
"F:\\C++\\headfile\\hello.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-std=c++17"
],
"options": {
"cwd": "D:/MinGw/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: D:/MinGw/bin/g++.exe"
}
]
}
参数解读:
gcc带不同参数的含义:"-g"产生调试信息,"-c"编译中间目标文件,"-I"指定链接库,"-o"生成指定命名的可执行文件
总结&笔记:
相关代码:
${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test
${workspaceRootFolderName}:表示workspace的文件夹名,也即Test
${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json
${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json
${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks
${fileBasename}:当前文件的文件名,tasks.json
${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode
${fileExtname}:当前文件的后缀,也即.json
${lineNumber}:当前文件光标所在的行号
${env:PATH}:系统中的环境变量
背景知识
gcc
GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。
g++
g++是GCC中的GUN C++ Compiler(C++编译器)