总结

如果说使用code runner只需要安装好MinGW和clang并且配置好环境变量即可,当然这个只可以运行代码并不支持调试的功能,如果使用调试则需要用下面的方法。

1、code runner用法

1.1 运行代码

  • 使用捷径 Ctrl+Alt+N
  • 或按F1,然后选择/键入Run Code
  • 或右键单击“文本编辑器”,然后Run Code在编辑器上下文菜单中单击
  • 或Run Code在编辑器标题菜单中单击按钮
  • 或Run Code在文件资源管理器的上下文菜单中单击按钮

1.2 停止运行的代码:

  • 使用捷径 Ctrl+Alt+M
  • 按F1,然后选择/键入Stop Code Run
  • 右键单击“输出通道”,然后Stop Code Run在上下文菜单中单击

2 选择相应的语言运行代码

要选择要运行的语言,请使用快捷方式Ctrl+Alt+J,或按F1,然后选择/输入Run By Language

然后输入或选择要运行的语言:例如php, javascript, bat, shellscript…

3 修改或查看运行指令

确保在环境变量中设置了每种语言的执行者PATH。

您也可以在其中添加条目code-runner.executorMap以设置执行程序PATH。

例如,为ruby,php和html设置执行者路径:

{
	"code-runner.executorMap": {
		"javascript": "node",
		"php": "C:\\php\\php.exe",
		"python": "set PYTHONIOENCODING=utf8 && python $fullFileName",
		"perl": "perl",
		"ruby": "C:\\Ruby23-x64\\bin\\ruby.exe",
		"go": "go run",
		"html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
		"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
		"c": "chcp 65001 && clear && cd $dir && gcc *.c -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe",
	}
}

如果使用C或者C++实现多文件编译
那么需要进行修改为如下所示

"c": "cd $dir && gcc *.c -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe",
"cpp": "cd $dir && g++ *.cpp -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe",

3.1 支持的自定义参数

  • $ workspaceRoot:在VS Code中打开的文件夹的路径
  • $ dir:正在运行的代码文件的目录
  • $ dirWithoutTrailingSlash:运行的代码文件目录不带斜杠
  • $ fullFileName:正在运行的代码文件的全名
  • $ fileName:正在运行的代码文件的基本名称,即没有目录的文件
  • $ fileNameWithoutExt:代码文件的基本名称,不带扩展名
  • $ driveLetter:正在运行的代码文件的驱动器号(仅Windows)
  • $ pythonPath:Python解释器的路径(由Python: Select Interpreter命令设置)

请注意反斜杠和执行程序文件路径中的空格

反斜杠:请使用 “\\”
如果文件路径中有空格,请使用“\”包围文件路径

4 需要注意的问题

问题1:运行后出现无法识别"gcc"等指令,前提是已经安装了MinGW并且配置了环境变量。

解决方法一:安装的VS Code有可能时便携版本(ZIP)或者没有安装到C盘下,导致没有管理员权限,所以运行的时候有些指令没办法完成。我们需要做的是VS Code默认打开为管理员身份即可。

5 中文乱码的现象

  1. 文件 – 首选项-- 设置 搜索 Code-runner: Run In Terminal , 在复选框中打勾
  2. 如果上面没有搜索结果,搜索 code-runner.executorMap, 点击在settings.json中编辑, 增加如下配置行 “code-runner.runInTerminal”: true,

上述还不行那就直接更改在settings.json中C和C++的运行命令

"c": "chcp 65001 && clear && cd $dir && gcc *.c -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe",
"cpp": "chcp 65001 && clear && cd $dir && g++ *.cpp -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe",

6 配合clang使用

修改成下述即可。

"c": "chcp 65001 && cd $dir && clang *.c -o $fileNameWithoutExt.exe -I './include/' -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c11 && &'$dir$fileNameWithoutExt'",
"cpp": "chcp 65001 && cd $dir && clang++ *.cpp -o $fileNameWithoutExt.exe -I './include/' -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c++17 && &'$dir$fileNameWithoutExt'",

7 C/C++编译环境 (MinGW GCC)

前提:需要安装MinGW和添加PATH变量。

7.1 c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17763.0",
            "compilerPath": "F:\\mingw64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

7.2 launch.json

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",//要调试的文件
      "args": [],//参数设置,默认不理
      "stopAtEntry": false,//true入口暂停,main一开始就暂停,改为false
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true,//外部控制台显示,false则显示在VScode里
      "MIMode": "gdb",
      "miDebuggerPath": "F:\\mingw64\\bin\\gdb.exe",//调试使用,自己用的时候路径要改
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "build" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
    }
  ]
}

7.3 tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "type": "shell",
      "command": "g++",
      "args": ["-g", "${file}",  "-o","${fileBasenameNoExtension}.exe"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}