操作系统:win10
编译器: mingw32
必须插件:code runner
目标:实现多文件的编译运行与调试
本文使用c++作为例子
首先新建一个文件夹,以英文命名,在文件夹中创建Debug和Release两个子文件夹
再创建main.cpp
//main.cpp
#include <iostream>
void func();
int main(int argc, char*argv[])
{
func();
std::cin.get();
return 0;
}
再新建func.cpp
#include <iostream>
void func()
{
std::cout << "Hello World!";
}
新建debug.txt,用来存放debug的设置
main:main.o func.o
g++ -o ./Debug/main main.o func.o
func.o:func.cpp
g++ -g -Wall -c func.cpp
main.o:main.cpp
g++ -g -Wall -c main.cpp
注意g++命令前面为tab键,不是空格
注意第二行就是要把目标输出到debug文件夹
使用-g参数才能进行gdb调试
新建release.txt,存放release的配置
main:main.o func.o
g++ -o ./Release/main main.o func.o
func.o:func.cpp
g++ -O2 -Wall -c func.cpp
main.o:main.cpp
g++ -O2 -Wall -c main.cpp
.PHONY:clean
clean:
-del *.o
注意第二行输出到release文件夹
使用-O2优化
打开settings.json,打开方式为点击左下角小齿轮,点击settings,弹出新窗口后在右上角找到一对花括号,点击即可打开
在里面找到"code-runner.executorMap": 部分,往里面添加
“cpp”: “make -f release.txt clean && make -f release.txt && ./Release/main.exe && make -f release.txt clean”
这里的意思是每次使用code runner运行的时候先删除所有.o文件然后重新编译运行,在程序结束后再清除一次.o文件,至于为什么这样做后面解释
-----------------------------------------------------------调试部分---------------------------------------------------------
点击界面左侧的debug选项,一开始应该是这样
点击小齿轮会弹出一个下拉列表,选择GDB那个,VS code就会自动生成一个叫.vscode的文件夹在你的项目下,并在里面生成一个launch.json
找到"program"那一行,把for example…删掉后写上要调试的exe路径
再找到"miDebuggerPath",这里填写gdb.exe的路径
再添加一行"preLaunchTask": “main”,
这里不一定是main,但要跟下面tasks的label一致
再在.vscode里面新建tasks.json
{
"version": "2.0.0",
"tasks":
[
{
"label": "main",
"type": "shell",
"command": "make",
"args": ["-f", "debug.txt"],
}
]
}
这样就大功告成了,平时用code runner跑的代码就用release.txt的参数
点击debug的绿色箭头就用debug.txt的参数,但由于debug过后不知道如何删除.o文件,只能在运行release版本时前后各清理一次.o文件