在Win10上配置vscode用于C++的开发
本文主要介绍如何利用vscode来使用微软的Visual C++编译器和调试器。本文将介绍如何配置vscode环境从而实现对C++
语言文件的编译,调试和运行。基本内容来自官方文档,添加了一点自己的理解。
其实官方的文档已经非常详尽,这里只是记录以下自己的学习过程.
参考资料,官方vscode文档: Configure VS Code for Microsoft C++
准备条件
-
已经安装了 Visual Studio Code
-
安装
C++
扩展,如图,点击左侧插件选项后,搜索C++得到的第一个结果,由Microsoft出品。
-
安装Microsoft Visual C++(MSVC)编译工具集,如果电脑上已经安装了Microsoft Visual Studio,那么已经包含了工具集,当然也可以不安转Microsoft Visual Studio的IDE工具,直接下载安装[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTYAAn9G-1650986676722)(https://visualstudio.microsoft.com/downloads#other)],选择自己的下载版本,如
Build Tools for Visual Studio 2019
,当然也可以下载使用最新的版本。
检查Microsoft Visual C++是否安装正确
为了在命令行使用MSVC,必须从Developer Command Prompt for Visual Studio
(可以从搜索栏查找)中运行,因为包含了cl.exe
,一般的命令行或者Powershell
没有包含必要的INCLUDE
文件。
如果由于某些原因,不能使用Developer Command Prompt for Visual Studio
,也可以通过配置环境来实现,在介绍task.json
一节会介绍。
创建 Hello World
程序
对于C++
程序,一般牵涉下面三个配置文件,我们会逐一介绍。
task.json
构建指令launch.json
调试设置c_cpp_properties.json
编译器路径以及智能推荐的设置
我们首先添加helloworld.cpp
文件,如下:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
利用task.json
创建Build任务
使用Ctrl+shift+p
,搜索Configure Default Build Task
,选择C/C++: cl.exe
文件,则会自动创建下面的tasks.json
调用configure Default build task
来创建task.json
,得到task.json
文件如下
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cl.exe 生成活动文件",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/nologo",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: cl.exe"
}
]
}
比较重要的参数由type
,说明任务类型cppbuild
,command
,描述要运行的程序,也就是cl.exe
,其是MSVC的命令行编辑工具。args
是命令行的参数,这里对应的意义,选中当前编辑器的活动文件${file}
,编译并创建对应的可执行文件。可执行文件的名字为${fileDirname}\\${fileBasenameNoExtension}.exe
,也就是与CPP
同名文件,后缀名为exe
。
对应的参数意义为:针对选中的文件,编译,创建可执行文件,创建与源文件相同的同名文件,导致最后的helloworld.exe
。
这时理论上就可以编译生成可执行文件了(按照官方文档)),点击左下角的构建或者使用快捷键ctrl+shift+b
,
但是在我的电脑上却会报错,D:\workspace\cuda-learn\main.cpp(1): fatal error C1034: stdio.h: 不包括路径集
,原因就如前文所讲,必须要使用命令行Developer Command Prompt for Visual Studio
,而不能是普通的命令行或者powershell
这里我们通过配置文件tasks.json
的方式来使得在vscode
能够直接调用构建命令。新的tasks.json
文件如下:
{
"version": "2.0.0",
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/C",
// The path to VsDevCmd.bat depends on the version of Visual Studio you have installed.
"\"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/Tools/VsDevCmd.bat\"",
"&&"
]
}
}
},
"tasks": [
{
"type": "shell",
"label": "cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"problemMatcher": ["$msCompile"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
这里主要由两个变化:
- 添加了
windows
的配置,配置了使用的命令行参数,这里也就是添加了VsDevCmd.bat
,具体的路径位置取决于安装路径,修改为实际路径即可; - 将tasks中的
type
改为shell
即可;
修改之后就能正常运行了。
修改task文件还可以获得更加定制的功能,比如将"${workspaceFolder}\\*.cpp"
替换 ${file}
. 可以编译当前路径下的所有.cpp
文件。
配置launch.json
调试程序
同样,点击侧边栏的运行和调试,创建launch.json
文件。添加内容如下
{
"version": "0.2.0",
"configurations": [
{
"name": "cl.exe build and debug active file",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"preLaunchTask": "cl.exe build active file"
}
]
}
描述了相调试的程序program
,配置完成后就可添加断点并启动调试.
C++相关配置
使用快捷键ctrl+shift+p
,搜索C++,选择Edit configurations
,则会自动创建c_cpp_properties.json
,这里可以配置编译器路径等等.
{
"configurations": [
{
"name": "Win32",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}
错误
- 如果找不到
cl.exe
,就将该程序添加到路径. - 如果报错
no include path set
,那么就是cl.exe
添加了路径,但是由于不是从Developer Command Prompt for Visual Studio
启动,所以找不到INCLUDE
等配置,解决办法是配置tasks.json
文件章节介绍的方法.其他的解决办法可以参考解决方案,但是我本人没有尝试,不知是否可行.
其他
windows使用GCC
linux 使用GCC
yaotuzhi/article/details/107144454),但是我本人没有尝试,不知是否可行.