前言
虽然有很多成熟的IDE可用,但只是写个作业还是没必要去用那些又大又慢的东西的。VS Code作为万能编辑器,可以用mingW配置C++的编译环境,但可惜会存在一些小问题,本着折腾的精神,总结一下互联网上的一下解决方法,并贴出我自己的方案。
基础的配置
不再赘述,网上一查一大把。需要注意的是一定要选择一个文件夹作为代码的存放地点。在完成了配置后,你的.vscode
文件夹下应该有数个json
文件。
编码问题与多文件引用问题
描述
如果你习惯在写代码的时候分成多个文件,最后在主函数里引用头文件调用,那在你编译运行的时候一定会遇到找不到定义的问题。
如果在代码中使用中文,便不得不处理中文的编码问题,网上的解决方案有很多,但要更改系统的默认设置或对其他功能造成影响。
以上两个问题通过更改Code Runner的默认编译指令解决。
解决
请保证开启了Run in Terminal
选项。文件编码依然采用utf8
格式,在.vscode
文件夹下新建settings.json
(或者在用户的settings.json
中操作),在最外部的一对大括号添加(若无,先自己加一对大括号):
1 2 3 4 5
| "code-runner.executorMap": {
"c": "cd $dir && gcc *.c -fexec-charset=gb2312 -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe", "cpp": "cd $dir && g++ *.cpp -fexec-charset=gb2312 -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe" },
|
使用-fexec-charset
参数指定输出编码,避免了需要更改文件或控制台默认编码的文件;使用通配符指定文件夹内所有cpp文件为需要编译的文件,修正了引用的问题。如果需要更加精细的设置,可以自己修改。
Debug问题
直接贴配置了,不多说。
tasks.json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| { "tasks": [ { "type": "cppbuild", "label": "Compile", "command": "g++", "args": [ "${fileDirname}\\*.cpp", "-g", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:/Project/mingw64/bin" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "编译器: C:/Project/mingw64/bin/g++.exe" } ], "version": "2.0.0" }
|
launch.json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| { "version": "0.2.0", "configurations": [ { "name": "g++.exe", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "C:/Project/mingw64/bin", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\Project\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Compile" } ] }
|
如果你的文件不是utf8
编码,那在调试的时候中文会变成乱码,这也是前文要求保持utf8
编码的原因。