无法输入
在 Visual Studio Code 中安装 Code Runner 插件后,运行c++程序无法输入,是因为默认使用的不是终端,添加code-runner.runInTerminal为true即可
中文乱码
如果cpp文件是utf-8文件,使用终端输出中文默认会出现乱码,修改code-runner.executorMap 加入-fexec-charset=GBK 即可
路径报错
提示找不到路径,报错如下:
g++: error: xxx.cpp: No such file or directory
g++: fatal error: no input files
compilation terminated.
一般打开的文件夹是不会报这个错的,打开单个文件的时候,终端默认路径是在c盘,而打开的文件不在c盘时会报错,因为windows使用cd是无法切换盘符的,所以需要在code-runner.executorMap中加入切换盘符的命令。
另外如果文件名中有空格的话也会报错,所以需要使用 \" 把文件名包含起来。路径使用$dir自带 "。
完整设置
打开 首选项 - 设置,在用户设置中加入,
或者"crtl+shift+p",输入"settings.json", 在settings.json文件中加入
"code-runner.runInTerminal":true,
"code-runner.executorMap": {
"cpp": "cd /d $dir && g++ -std=c++11 -fexec-charset=GBK \"$fileName\" -o \"$fileNameWithoutExt.exe\" && \"$fileNameWithoutExt.exe\"",
"c": "cd /d $dir && gcc -fexec-charset=GBK \"$fileName\" -o \"$fileNameWithoutExt.exe\" && \"$fileNameWithoutExt.exe\""
}
路径说明
- $ workspaceRoot:在VS Code中打开的文件夹的路径
- $ dir:正在运行的代码文件的目录
- $ dirWithoutTrailingSlash:运行的代码文件目录不带斜杠
- $ fullFileName:正在运行的代码文件的全名
- $ fileName:正在运行的代码文件的基本名称,即没有目录的文件
- $ fileNameWithoutExt:代码文件的基本名称,不带扩展名
- $ driveLetter:正在运行的代码文件的驱动器号(仅Windows)
- $ pythonPath:Python解释器的路径(由Python: Select Interpreter命令设置)
使用MSVC作为编译器
配置环境变量
- Path 环境变量
在系统变量Path中,加入下面路径,和前面内容使用;(英文分号)隔开,注意替换自己的版本号
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\你的版本号\bin\Hostx64\x64
- INCLUDE 环境变量
在系统变量中新建环境变量 INCLUDE(注意大写),写入以下路径,使用;(英文分号)隔开,注意替换自己的版本号
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\你的版本号\include
C:\Program Files (x86)\Windows Kits\10\Include\你的版本号\shared
C:\Program Files (x86)\Windows Kits\10\Include\你的版本号\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\你的版本号\um
C:\Program Files (x86)\Windows Kits\10\Include\你的版本号\winrt
- LIB 环境变量
在系统变量中新建环境变量 LIB(注意大写),写入以下路径,使用;(英文分号)隔开,注意替换自己的版本号
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\你的版本号\lib\x64
C:\Program Files (x86)\Windows Kits\10\Lib\你的版本号\ucrt\x64
C:\Program Files (x86)\Windows Kits\10\Lib\你的版本号\um\x64
配置命令
在settings.json文件中,“code-runner.executorMap” 对应内容修改 cpp 和 c 文件的编译命令
"cpp": "cd /d $dir && cl /std:c++14 /EHs /O1 \"$fileName\" && del \"$fileNameWithoutExt.obj\" && \"$fileNameWithoutExt.exe\"",
"c": "cd /d $dir && cl /O1 \"$fileName\" && del \"$fileNameWithoutExt.obj\" && \"$fileNameWithoutExt.exe\""