目录
一,VS Code简单介绍和插件安装
二,MinGW简单介绍和配置环境变量
三,简单测试C/C++代码
四,详解文件编译和调试
1,单文件编译和调试
2,多文件编译和调试
1.VS Code是一个微软旗下的一个广受欢迎的开源文本编辑器,相对于其它的编辑器(如NotePad++),我就对这款编辑器爱不释手,官网下载链接。
比如炫酷的主题,漂亮的外观,集成了终端,跨平台的、高性能的、轻量级的体积等等数不胜数,当然,VS Code最厉害的地方在于它有着成熟的插件市场以满足开发者的需求(说的就是我哈),得益于这个插件市场,我们可以把VS Code打造成各种开发环境(比如Python)
2.安装需要的插件,丰富的插件市场,凭个人喜好也可安装其它插件哈。
3.为方便调试运行程序,对安装的 .run 插件进行如下配置。
1.温馨提示:VS Code只是一款文本编辑器,不是编译器。
2.本质上和Windows的记事本以及NotePad++是一个东西,你可以用VS Code编写代码源文件,但可别指望它能编译运行程序了,那是编译器的工作,所以为了能在VS Code里面编译并运行C/C++源文件,我们就需要去额外的安装C和C++的编译器:GCC。
3.Windows平台上的GCC移植版本是 MinGW,我们用MinGW其实就是用里面的GCC来编译我们写的C/C++源文件。
4.进入MinGW官网后按如图进行下载就行了
4.解压到没有中文和空格的目录下,然后按如下配置环境变量。
5.win+r 键后输入cmd,回车弹出命令终端后输入:gcc --version 来验证一下是否配置环境变量成功。
1.输入如下代码后运行效果如下。
2.上面说到运行成功后会自动生成.vscode文件,里面有个tasks.json配置文件,该json配置文件内容的解释大致如下,。
{
"version": "2.0.0",
"tasks": [
{//这个大括号里是‘构建(build)’任务
"label": "build", //任务名称,可以更改,不过不建议改
"type": "shell", //任务类型,process是vsc把预定义变量和转义解析后直接全部传给command;shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍
"command": "gcc", //编译命令,这里是gcc,编译c++的话换成g++
"args": [ //方括号里是传给gcc命令的一系列参数,用于实现一些功能
"${file}", //指定要编译的是当前文件
"-o", //指定输出文件的路径和名称
"${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //承接上一步的-o,让可执行文件输出到源码文件所在的文件夹下的bin文件夹内,并且让它的名字和源码文件相同
"-g", //生成和调试有关的信息
//"-Wall", // 开启额外警告
//"-static-libgcc", // 静态链接libgcc
"-fexec-charset=GBK", // 生成的程序使用GBK编码,不加这一条会导致Win下输出中文乱码
"-std=c11", // 语言标准,可根据自己的需要进行修改,写c++要换成c++的语言标准,比如c++11
],
"group": { //group表示‘组’,我们可以有很多的task,然后把他们放在一个‘组’里
"kind": "build",//表示这一组任务类型是构建
"isDefault": true//表示这个任务是当前这组任务中的默认任务
},
"presentation": { //执行这个任务时的一些其他设定
"echo": true,//表示在执行任务时在终端要有输出
"reveal": "always", //执行任务时是否跳转到终端面板,可以为always,silent,never
"focus": false, //设为true后可以使执行task时焦点聚集在终端,但对编译来说,设为true没有意义,因为运行的时候才涉及到输入
"panel": "new" //每次执行这个task时都新建一个终端面板,也可以设置为shared,共用一个面板,不过那样会出现‘任务将被终端重用’的提示,比较烦人
},
"problemMatcher": "$gcc" //捕捉编译时编译器在终端里显示的报错信息,将其显示在vs code的‘问题’面板里
},
{//这个大括号里是‘运行(run)’任务,一些设置与上面的构建任务性质相同
"label": "run",
"type": "shell",
"dependsOn": "build", //任务依赖,因为要运行必须先构建,所以执行这个任务前必须先执行build任务,
"command": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //执行exe文件,只需要指定这个exe文件在哪里就好
"group": {
"kind": "test", //这一组是‘测试’组,将run任务放在test组里方便我们用快捷键执行
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true, //这个就设置为true了,运行任务后将焦点聚集到终端,方便进行输入
"panel": "new"
}
}
]
}
编写如下图测试代码完成后,点击菜单栏的 终端 —> 新终端 打开 Windows 自带的 power shell,支持 Linux 命令,流程准备如下:
# 编译c源文件
$ gcc xxx.c -o 可执行程序名
# 编译C++源文件
$ g++ xxx.cpp -o 可执行程序名
依据源文件的类型(是C还是C++)在终端中输入上述对应命令来编译源文件,效果如下:
点击设置(小钮轮),选择对应的编译套件中的编译器(这里我选择上面安装的 MinGW),然后会自动生成一个叫 .vscode 的目录,并且里面有两个文件 launch.json 和 tasks.json。
按上述步骤生成的 .vscode 目录后就可以不用管了,接下来在指定行位置设置断点(快捷键 F9),使用快捷键 F5 或者通过菜单项 运行 —> 启动调试 就可以进行调试操作了(非调试运行快捷键 Ctrl + F5),如下图:
1.基于命令(不常用)
# C++程序编译
$ g++ ./src/demo1.cpp ./src/demo2.cpp ./main.cpp -o main -I ./include
# 编译 src 目录下所有的 .cpp 文件
$ g++ ./src/*.cpp ./main.cpp -o main -I ./include
上面两种命令可自行选择,测试案例结构如下图,正确输出结果,命令形式测试成功:
2.基于CMake
第一步先安装如下两个插件
第二步在源文件所在的工作区目录添加一个 CMake 所需的 CMakeLists.txt 依赖文件,在这文件中添加如下语句
project(VS-CODE-C++) #设置项目名称,可以随便取
aux_source_directory(src SRC_SUB) #demoOne.cpp demoTwo.cpp 源文件所在的 src目录
aux_source_directory(. SRC_CUR) #main.cpp 所在的当前的目录下
add_executable(main ${SRC_SUB} ${SRC_CUR}) #取出变量 SRC_SUB,SRC_CUR 里的源文件后,生成的目标可执行程序名称为 main
include_directories(include) #设置包含的头文件
project(projectname [CXX][C][Java]):指定项目工程名称,后面指定的支持语言列表可忽略
aux_source_directory(dir var):第一个参数 dir 是指定源文件所在的目录,第二个参数 var 是用于存储这些源文件列表的变量
add_executable(target src):指定源文件 src (${var}可以取出变量中的源文件列表),然后生成可执行程序 target
include_directories(headDirPath):用来向工程添加多个指定头文件的搜索路径,路径之间用空格分开
第三步来配置 cmake,按快捷键 ctrl+shift+p,在窗口输入 CMake configure,选中 配置 项
如果 VsCode 加载不到编译器,会弹出如下窗口,选择 MinGW 套件中的GCC编译器,若没弹出MinGW编译器 查看是否配置好了环境变量,不要选择 VS 的编译器,如下
备注:但这里我遇到了一个问题,如下(没遇到就直接跳到第四步哈)
接下来就来解决这个问题,按如下操作打开 CMake Tools 插件里的 settings.json 文件
打开该 Json 文件后,自行将 "cmake.generator": "MinGW Makefiles" 添加到某一行,如下显示
第四步在配置完 cmake 之后,会在当前工程工作区生成一个 build 目录,该目录内容如下
打开 vscode 的终端(点击菜单项 终端 —> 新建终端) ,在终端执行下述命令
1,进入到生成的 build 目录:cd build
2,通过 cmake 工具执行基于编写的 CMakeLists.tst 来生成 MakeFile 文件:cmake .
3,通过 make 工具生成的 makefile 文件来构建项目,该工具的 32 位在 MinGw 中的构建工具是 mingw32-make.exe,64 位的MinGW中的构建工具是 mingw64-make.exe,在终端输入 mingw 加tab 键会自动跳出对应位数的构建工具全称,当前使用的是 mingw32-make.exe。
生成 .vscode 目录可翻看前面的步骤, 然后在源文件中某处设置断点,点击界面底部的 小虫子按钮 可进行调试,如下
如果通过按快捷键 F5 启动调试,但会报如下错误,这是因为 .vscode 目录下的 tasks.json 和 launch.json 文件内容有的错误导致了,至于怎么弄看这个哔站视频CMake 多文件调试。