windows环境下VSCode配置C++教程(使用msvc编译器) 您所在的位置:网站首页 visiocode下载 windows环境下VSCode配置C++教程(使用msvc编译器)

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

2024-03-22 13:55| 来源: 网络整理| 查看: 265

写在前面

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 int main() { std::cout "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的命令,点它。

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

遗漏了命令前导符>;你正处于上一个还未退出的命令的中途,按ESC退出它,去呼出新的命令行;你的工作区已经有了一个我们想要设置的文档(这一章是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文档,都按照上述内容写好了):

在主工作区下任意路径,新建一个cpp代码文件。我这里的位置是A/a.cpp,并输入简单的算法,比如helloworld。如下图所示: 在这里插入图片描述

确保你选中了这份代码,Ctrl+Shift+P呼出命令行,输入run task,它会推荐你几个匹配度较高的命令,请选中全称为Tasks: Run Task的指令: 在这里插入图片描述

点击Tasks: Run Task后,会再次推荐你几条优选的task命令,其中就有我们刚刚设置好的任务label和detail,说明VSCode已经识别到我们的任务书了: 在这里插入图片描述 (可以看到,还有一个安装扩展后自带的task:“C/C++: cl.exe 生成活动文件”,它和我们自己写的任务目标类似,所以你也可以使用它,它会在你的tasks.json追加这个任务,你可以事后去查看两个任务的区别)

点击它:C/C++ Executable: build current active file,就会看到终端已经运行并输出build结果了(TERMINAL视口会自动出现在工作区域右下,如果没有的话请键入Ctrl+Shift+ˋ以建立一个新的终端,并重新执行上述过程)。可以看到它调用cl.exe的方式,显示如下: 在这里插入图片描述

/A目录如期有了a.obj和a.exe,显示如下: 在这里插入图片描述

最后,你应该尝试在终端里运行一下你的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就容易的多了):

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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有