一篇文章帮你装好CC++和VScode环境

    科技2022-07-14  121

    配置 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++源文件 但是需要注意修改后此目录下所有源文件都参与编译(不管项目是不是需要它),所以需要格外注意源文件所属的目录及层级结构.
    Processed: 0.012, SQL: 8