0


windows环境下VSCode配置C++教程(使用msvc编译器)

写在前面

VSCode是个优秀的、开源的、可扩展的代码编辑器,今天就来介绍一下在windows系统下如何用它来配置C++环境。

须知VSCode只是个编辑器,它自己是不带有编译、构建、调试等工具套件的,所以需要我们额外配置一些东西。

(理论上用宇宙超级无敌IDE:Visual Studio 2022就可以,但是我们技术人诶没办法就是玩它太笨重了,而且不够开源。所以我们今天尝试用VSCode配置)

一、安装并配置msvc

首先我们需要下载Visual Studio Installer(现在大大小小的东西都得通过它下载,不能单独下载组件了)。VS下载网址:Visual Studio 2022 Community

我们以免费的最新的(2022.11.08)社区版为例,安装时,选择“单个组件”选项卡,我们需要以下列表里的组件,请确保他们已被选中或已安装:
组组件名称编译器、生成工具和运行时MSVC v143 - VS 2022 C++ x64/x86生成工具(最新)SDK、库和框架Windows 10 SDK (10.0.20348.0)
注:这两个就够了;选择其他相近或较早版本的组件也可,一定要是MSVC生成工具和Windows SDK。

选择安装位置,安装好后关闭Visual Studio。接下来配置MSVC和windows kits的环境变量,需要添加以下环境变量或路径:
变量名值备注VS170VCTOOLSD:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools这是我的安装位置,你用你的WIN10KITSD:\Windows Kits\10这个位置也是WINDOWS_SDK_VERSION10.0.20348.0Path%VS170VCTOOLS%\MSVC\14.33.31629\bin\Hostx64\x64我们的编译器

cl.exe

就在这里面INCLUDE%VS170VCTOOLS%\MSVC\14.33.31629\include用英文

;

隔开多个值INCLUDE%WIN10KITS%\Include%WINDOWS_SDK_VERSION%\ucrtINCLUDE%WIN10KITS%\Include%WINDOWS_SDK_VERSION%\umINCLUDE%WIN10KITS%\Include%WINDOWS_SDK_VERSION%\sharedLIB%VS170VCTOOLS%\MSVC\14.33.31629\lib\x64用英文

;

隔开多个值LIB%WIN10KITS%\Lib%WINDOWS_SDK_VERSION%\ucrt\x64LIB%WIN10KITS%\Lib%WINDOWS_SDK_VERSION%\um\x64
环境配置好后,我们可以简单测试一下:

// helloworld.cpp#include<iostream>intmain(){
    std::cout <<"Hello, world!"<< std::endl;return0;}

打开

cmd

定位到它,输入编译构建命令:

cl /EHsc helloworld.cpp

,运行helloworld.exe,正确的话会正常输出。

二、安装VSCode和C++扩展

VSCode下载地址:Visual Studio Code。打开,搜索并安装扩展C/C++,完事如下图所示:

在这里插入图片描述
就是这样。

三、配置工作区.vscode

VSCode在每个工作区(项目文件夹)下,都配有一个

.vscode

隐藏文件夹,里面存放一些脚本文件,指示VSCode对工作区的代码进行操作的模板或模式。

3.1 配置编译器信息:c_cpp_properties.json

以D:\source\vscode_msvc\为例,建立它,并在VSCode里打开这个文件夹,使它成为我们目前的主工作区。输入快捷键

Ctrl
  • Shift
    
  • P
    
    ,呼出命令行,输入C/C++,搜索并寻找一个全称为
    C/C++: Edit Configurations (UI)
    
    的命令,点它(如果你搜索不到,或许是遗漏了命令前导符
    >
    
    )。这时就会自动生成一个.vscode文件夹,里面有一个文件叫c_cpp_properties.json,我们的编译器配置就靠它了。

由于我们是通过UI来改的,而不是直接写json的方式,所以VSCode为我们打开了一个C/C++ Configurations主页。如果之前每一步都按照要求配置好,那么这里会自动生成很多已经为你改好的选项,包括配置模式(win32)、编译器路径(…/bin/Hostx64/x64/cl.exe)、编译器参数(无)、IntelliSense模式(windows-msvc-x64)、包含路径(${workspaceFolder/})、宏定义(_DEBUG,UNICODE,_UNICODE)、C标准(c17)、C++标准(c++17),以及高级设置里的Windows SDK版本**(10.0.20348.0),等等。如果这些没有自动生成,请逐一检查它们的路径并如实填写就好;如与你的意愿不符,比如C++标准只需要11,也可以更改。更改是即时响应的,不需要“保存”。

这些设置或修改最终会反映在.vscode/c_cpp_properties.json描述文件里,打开它,你应该会看到如下已经设置好的内容:

// .vscode/c_cpp_properties.json{"configurations":[{"name":"Win32","includePath":["${workspaceFolder}/**"],"defines":["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion":"10.0.20348.0","compilerPath":"D:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/bin/Hostx64/x64/cl.exe","cStandard":"c17","cppStandard":"c++17","intelliSenseMode":"windows-msvc-x64"}],"version":4}

3.2 配置构建(生成)任务:tasks.json

不要离开你的D:\source\vscode_msvc主工作区,除了.vscode外它应该是空的,所以如果你已经着急写出了一份代码,并且不太熟悉它将对下面的操作产生什么样的影响时,请先关闭或者不要选中它。

首先,键入

Ctrl
  • Shift
    
  • P
    
    ,呼出命令行,输入build,搜索并寻找一个全称为
    Tasks: Configure Default Build Task
    
    的命令,点它。

【注】如果你的命令行总是不出现预期的行为,可能是以下原因:

  1. 遗漏了命令前导符>
  2. 你正处于上一个还未退出的命令的中途,按ESC退出它,去呼出新的命令行;
  3. 你的工作区已经有了一个我们想要设置的文档(这一章是tasks.json,那么你可以跳过前置的步骤,直接按照后面的章节去设置它);

搜索结果会提示你从模板创建一个tasks.json文档,全称是

Create tasks.json file from template

,点它;

这时会再次提示你使用什么样的构建套件,并推荐了几个可选项,有MSBuild、maven、.NET Core等。都不选,直接点

Other

。(如果你已经有了tasks.json,而且其中也有已经编写好的任务,那么这里就会显示它们。)

现在,我们的.vscode文件夹里新添进来一个文档:tasks.json,由于VSCode没有提供UI,所以只能通过手写tasks.json来完成构建指令。我们简介一些它的语法,然后编写一些常用的构建指令,就可以了。如果想编写复杂的task,请参考官方手册。

3.2.1 tasks.json基础语法简介

该文档由json格式描述了一个任务集(A Set of Tasks),包含若干任务,每个任务具有一些字符串形式的或者属性(key, or attributes, or properties),常用的键就是标签(label)、任务类型(type)、调用指令(command)等等,这些键都对应了一个或多个字符串,用花括号

{}

或中括号

[]

括起来,并用逗号

,

分隔。

3.2.2 一条简单的build task

举个栗子,一个简单的build任务可以描述如下(可直接复制覆盖tasks.json):

// .vscode/tasks.json{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version":"2.0.0","tasks":[{"label":"C/C++ Executable: build current active file","type":"shell","command":"cl.exe","args":["/EHsc","${file}","/Fo:","${fileDirname}\\","/Fe:","${fileDirname}\\${fileBasenameNoExtension}.exe"],"problemMatcher":"$msCompile","detail":"Build only the current active file."},]}

它记录的信息可以列成表如下:
键值备注“label”“C/C++ Executable: build current active file”标签值。用于VSCode识别你的任务,相当于给任务起个名。“type”“shell”任务类型。你想得到什么样的构建结果,有shell,process等多种选项。默认shell,即控制台程序。“command”“cl.exe”你想呼起的指令。这里我们就是msvc的编译器cl.exe“args”“/EHsc” et al.为你的指令加上各种参数。/EH是设置异常处理模型,/Fo是输出目录,/Fe是重命名“problemMatcher”“$msCompile”优化PROBLEMS视图(强烈推荐,它与msvc绝配,也是我不想用mingw来配置的直接原因)。“detail”“…balabala”任务的细节说明,方便日后VSCode用它来提示你。……丰富你的需求,添加更多的键值吧!参考Tasks in Visual Studio Code: custom tasks
这个任务很简单,说白了就是编译你当前选中的单个代码文件,并尝试输出一个可执行程序。假设你选中了工作区下的一个test.cpp,那么当VSCode识别这个task时便会合成一条指令:

cl.exe /EHsc D:\source\vscode_msvc\test.cpp /Fo: D:\source\vscode_msvc /Fe: D:\source\vscode_msvc\test.exe

3.2.3 测试

现在,我们完整的测试一遍(请确保你的工作区的.vscode里面的两份json文档,都按照上述内容写好了):

  1. 在主工作区下任意路径,新建一个cpp代码文件。我这里的位置是A/a.cpp,并输入简单的算法,比如helloworld。如下图所示:在这里插入图片描述
  2. 确保你选中了这份代码,Ctrl+Shift+P呼出命令行,输入run task,它会推荐你几个匹配度较高的命令,请选中全称为Tasks: Run Task的指令:在这里插入图片描述
  3. 点击Tasks: Run Task后,会再次推荐你几条优选的task命令,其中就有我们刚刚设置好的任务label和detail,说明VSCode已经识别到我们的任务书了:在这里插入图片描述 (可以看到,还有一个安装扩展后自带的task:“C/C++: cl.exe 生成活动文件”,它和我们自己写的任务目标类似,所以你也可以使用它,它会在你的tasks.json追加这个任务,你可以事后去查看两个任务的区别)
  4. 点击它:C/C++ Executable: build current active file,就会看到终端已经运行并输出build结果了(TERMINAL视口会自动出现在工作区域右下,如果没有的话请键入Ctrl+Shift+ˋ以建立一个新的终端,并重新执行上述过程)。可以看到它调用cl.exe的方式,显示如下:在这里插入图片描述
  5. /A目录如期有了a.obj和a.exe,显示如下:在这里插入图片描述
  6. 最后,你应该尝试在终端里运行一下你的a.exe,输入命令./A/a.exe,结果如下:在这里插入图片描述 呼~~测试到这里就算是成功啦!

3.2.4 推荐几个常用的任务

我这里还写了几个任务,分别对应不同的编码场景,希望能帮到大家!(附tasks.json文档:download custom tasks.json(站内地址放心跳转,如地址失效可评论提醒或索要)
任务标签应用场景“C/C++ Executable: build current active file”只编译并生成当前活跃文件。(适用于每日刷题那种,即不断在工作区内创建多个单文件小项目)“C/C++ Executable: build and debug current active file”只编译并生成当前活跃文件,并产生调试信息(.pdb文件等,放在bin目录)。“C++ Executable: build current folder”视当前活跃文件所在的文件夹为一个独立的项目,进行编译构建(放在bin目录)。“C++ Executable: build and debug current folder”相当于上一个任务的debug版本,构建并产生调试信息(放在bin目录)。“C++ dynamic link library: build current folder”为当前活跃文件所在的文件夹(项目)生成一个.dll动态链接库,放在bin目录。“C++ static library: build current folder”为当前活跃文件所在的文件夹(项目)生成一个.lib静态库,放在bin目录。(目前只能以你的项目里第一个源文件的名字来命名,原因是lib.exe的重命名等功能选项已被非VS环境禁用)“C++: clear build”清除当前活跃文件所在的文件夹(项目)下的所有build,即清空bin目录。
【注】它们仍不能胜任更复杂的项目构建任务。如果需要,要额外引入cmake支持(扩展),或者干脆直接使用Visual Studio。

3.3 配置调试器:launch.json

其实没有launch.json也是可以单文件调试的,因为我们有安装C/C++扩展,它提供了支持。

可以进行一个简单的测试:选中一个活跃的代码文件,设置好断点,然后点击左侧调试界面里的

Run and Debug

,如果你的tasks.json已经被默认追加了任务(就是扩展自带的“C/C++: cl.exe 生成活动文件”任务,它在你第一次调用这个任务时自动追加),那么调试流程现在应该已经正常启动了;否则还需要一小步,手动选择配置,如下图所示:
在这里插入图片描述
但是这一默认功能只能提供单文件的调试,如果需要在整个文件夹(项目)下进行调试,需要创建并配置一下launch.json,很容易(tasks.json写好后,launch就容易的多了):

  1. 首先,在工作区内选中一个C++代码文件,比如刚刚的a.cpp,确保你接下来的设置可以被C/C++扩展检测到。不妨多写些功能,以便测试调试。
  2. 在左侧的调试界面,点击create a launch.json file,它会推荐几个模板,我们选中C++ (Windows),点击它(或者你手动在.vscode里面创建一个launch.json也可以,反正后面会说如何写)。如下图所示:在这里插入图片描述在这里插入图片描述
  3. 现在你的.vscode文件夹里有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":"C++ Launch (Windows)","type":"cppvsdbg","request":"launch","program":"${fileDirname}\\bin\\main.exe","cwd":"${fileDirname}",}]}
  1. 大功告成,快去设置断点并调试吧!(上面这份launch.json,与之前的tasks.json是配套的,如果你需要另写,需注意"program"词条一定要设置为你的task生成的带有调试标记的可执行程序的目录,调试标记最好是msvc的,不要用其他编译平台比如mingw生成的调试程序==)。

大功告成,享受你的Visual Studio Code + MSVC之旅吧!

标签: vscode windows c++

本文转载自: https://blog.csdn.net/lzh1097776020/article/details/127734980
版权归原作者 弦乐四重奏 所有, 如有侵权,请联系我们删除。

“windows环境下VSCode配置C++教程(使用msvc编译器)”的评论:

还没有评论