配置 C/C++语言环境
下载MinGW64编译器,这个应该不用安装,解压到想放的位置就行(注意存放路径不要出现中文)然后打开MinGW64\bin并复制其路径,比如: D:\Game\Demo\Dev-Cpp\MinGW64\bin打开系统属性配置环境变量,在Path中新建添加以上路径好了,现在 gcc/g++编译器可以正常使用了
VScode 内插件配置
下载C/C++插件,这个是必须的,功能支持很全面再下载Code Runner,用于直接通过一条指定指令来编译运行程序(除非不嫌麻烦想敲又臭又长的命令行执行,否则这个插件是最优选择)
VScode 工作区配置
以上配置还不能使用 VScode 直接编译运行 C/Cpp 文件,需要配置工作区的编译运行逻辑(各个工作区分别配置),其配置文件是在名为.vscode 的文件夹下,结构参下:
注意如果已存在其他语言配置(如 Java,Python 等),需要结合内容谨慎插入,以免原有配置失效!C/C++运行调试环境仅需launch.json和task.json注意如果代码源文件取名包含中文肯定会导致调试程序报错(但是可以用 Code Runner 运行)
- .vscode
- launch.json
- setting.json
- task.json
launch.json
{
"version": "0.2.0",
"configurations": [
{ //C/C++配置开始
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:/Game/Demo/Dev-Cpp/MinGW64/bin/gdb.exe",
"preLaunchTask": "g++",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
} //配置结束
]
}
task.json
{
"version": "2.0.0",
"tasks": [
{ //C/C++配置开始
"type": "shell",
"label": "g++", //任务名称,对应launch里需要调用
"command": "D:/Game/Demo/Dev-Cpp/MinGW64/bin/gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc"],
"group": "build"
} //配置结束
]
}
重头戏!–解决乱码问题
接下来,个人找到了一个解决方案,不敢说全网独一份,但是咱确实没见到过.因为 MinGW64 编译器并不能指定源文件编码,而且 Windows 系统下终端默认使用的是GBK显示,于是只能用 GBK 保存运行才不乱码(但是 VScode 调试使用的是 UTF-8 编码),于是,种种冲突乱码了…
解决方案:
源文件使用UTF-8编码,改写 Code Runner 运行规则(找到配置文件里面的code-runner.executorMap),修改如下:
"c": "chcp 65001 && gcc *.c -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "chcp 65001 && g++ *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
其原理就是让 Windows 下的 Console 在运行时转到 UTF-8 代码页 65001 显示(因为默认情况下为 GBK936 页会使 UTF-8 输出数据乱码)
提倡任何语言都使用UTF-8编码,当然如果是 Linux/Mac 系统下不需要更改代码页,需要把上面相应的chcp 65001 &&去掉.
另外一个问题—多文件编译
默认的 Code Runner 执行的命令只能编译运行一个 C/C++源文件,但是很多情况下需要编译链接多文件的项目,上面我提供的命令支持编译同一目录下的所有 C/C++源文件
但是需要注意修改后此目录下所有源文件都参与编译(不管项目是不是需要它),所以需要格外注意源文件所属的目录及层级结构.
转载请注明原文地址:https://blackberry.8miu.com/read-7421.html