本文参考了微软vscode的官方文档“Configure VS Code for Microsoft C++”,使用visual studio自带的编译器来配置C/C++的编译环境,并做了一定修改,使用起来更加便捷。
系统:
Windows 10(64位)
已安装软件:
vscode(已安装C/C++扩展)
visual studio 2017(安装VC++组件)
为了确保visual studio的编译命令能够正常运行,首先需要做一些环境变量的配置。
1、先说一下配置环境变量的方法,在桌面右键点击“这台电脑”,在菜单中选择“属性”,再点击左侧“高级系统设置”,点击“环境变量”,在弹出的“环境变量”窗口中可以看到“系统变量”中包括两列内容:“变量名”和“变量值”,所谓配置环境变量就是在变量名中添加一些值,只要双击变量名就可以打开编辑窗口,一个变量名可以包含多个变量值,之间用英文分号隔开。
2、所需要配置的环境变量名和值
变量名 | 变量值 |
---|---|
path | C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64 |
INCLUDE | C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include |
INCLUDE | D:\Windows Kits\10\Include\10.0.17763.0\shared |
INCLUDE | D:\Windows Kits\10\Include\10.0.17763.0\ucrt |
INCLUDE | D:\Windows Kits\10\Include\10.0.17763.0\um |
INCLUDE | D:\Windows Kits\10\Include\10.0.17763.0\winrt |
LIB | C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64 |
LIB | D:\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64 |
LIB | D:\Windows Kits\10\Lib\10.0.17763.0\um\x64 |
变量值的路径可能会略有不同,一般只要安装了visual studio这些路径都会存在,如果变量名不存在时可以新建变量,然后添加对应的值即可。
1、由于vscode默认使用“utf-8”编码,而在Windows控制台默认使用的是“gbk”编码,如果直接新建文件编译会出错,为此先对vscode做一些配置修改,确保新建的C/C++文件使用“gbk”编码。
2、启动vscode,点击左下角“管理”按钮选择“设置”进入“用户设置”界面,在搜索框内输入“编码”会出现与编码相关的设置。取消“Files: Auto Guess Encoding”项的勾选,仍在此界面点击右上角”花括号({})“按钮进入json文件设置。
3、在json文件中添加下面代码,使得新建C/C++文件时使用“gbk”编码:
"[c]": {
"files.encoding": "gbk"
},
"[cpp]": {
"files.encoding": "gbk"
},
4、关闭设置框,选择“文件”菜单里的“打开文件夹”,在这里选定一个文件夹,作为项目的存储目录(例如D:\Project(CPP)),在此目录下新建文件,命名为“hello.cpp”,编写最简单的C++代码:
#include
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
cout << "这是一个最简单的C++程序!" << endl;
system("pause");
return 0;
}
5、点击左下角“管理”按钮选择“命令面板”(或使用快捷键Ctrl + Shift + P),点击进入“C/C++:编辑配置(JSON)”项。
6、此时vscode会在”.vscode“子文件夹中创建一个c_cpp_properties.json的配置文件,打开此文件,里面会包含一些默认设置。 C / C ++扩展会检测到visual studio的安装位置并自动设置compilerPath项。如果没有,您应该修改“cl.exe”的路径到compilerPath项。在默认的Visual Studio 2017 Build Tools安装中,“cl.exe”路径类似于这样:“C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe”,具体请自行查看所安装的visual studio的路径。另外确保将intelliSenseMode值设置为"msvc-x64"。“includePath”项暂时不需要,可以完全删除该设置。最终形成的文件内容如下:
{
"configurations": [
{
"name": "Win32",
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}
1、关闭c_cpp_properties.json文件,再次打开“命令面板”,选择“任务:配置默认测试任务”=>选择“使用模板创建task.json文件”=>选择“Others 运行任意外部命令的示例”。
2、此时vscode创建一个tasks.json文件并且打开它,使用下面代码替换其内容:
label项将在vscode命令行中使用,可以是您喜欢的任何名称;
command项表明我们正在使用cl.exe(MSVC编译器);
args项指定将传递给上一步中指定的编译器的命令行参数。它们必须按编译器预期的顺序出现。在此示例中,我们指定了异常处理模式(EHsc)并告诉编译器生成带符号(Zi)的调试版本。/Fe项参数告诉编译器将可执行文件命名为“hello.exe”。最后的“hello.cpp”为当前要编译的C++源文件名称
{
"version": "2.0.0",
"tasks": [
{
"label": "msvc build",
"type": "shell",
"command": "cl.exe",
"args": [
"/EHsc",
"/Zi",
"/Fe:",
"hello.exe",
"hello.cpp"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal":"always"
},
"problemMatcher": "$msCompile"
}
]
}
1、关闭task.json文件,点击“调试”菜单选择“添加配置”=> 选择“C++(Windows)”=>选择“Default Configuration”。
2、此时vscode创建“launch.json”文件并打开,用以下内容替换默认内容:
stopAtEntry项设置为false表示取消设置的默认断点;
externalConsole项设置为true表示使用外置的Windows系统控制台而不是vscode内置的调试控制台(原因在于由于前文所述的编码问题会导致在调试控制台输出中文时出现乱码)
请注意,程序名称hello.exe与tasks.json文件指定的名称相匹配
{
"version": "0.2.0",
"configurations": [
{
"name": "(msvc) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/hello.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true
}
]
}
到这里,我们便已经将编译和调试环境配置完毕,关闭“launch.json”文件。下面测试一下效果。
1、点击“终端”菜单选择“运行生成任务”(或使用快捷键Ctrl + Shift + B),vscode会启动生成任务并自动打开终端显示其生成过程。并且在左侧资源管理器可以看到生成一系列文件。
2、点击“调试”菜单选择“在不调试的情况下启动”(或使用快捷键Ctrl + F5),会看到在在弹出的控制台黑框中输出我们想要的结果。
到这里我们的环境配置已经圆满完成,经过测试也达到了预期效果,需要提醒的是,vscode编译调试C/C++必须在文件夹中进行,因此我们在其他文件夹使用这些配置时,只需要将当前的c_cpp_properties.json文件、tasks.json文件和“launch.json”文件复制到对应文件夹的“.vscode”子文件夹下,然后修改其中相应的的C/C++文件和可执行文件名称即可。