问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VS Code配置C++开发环境(MSVC)

创作时间:
作者:
@小白创作中心

VS Code配置C++开发环境(MSVC)

引用
1
来源
1.
https://www.cnblogs.com/ptrzs/p/17750197.html

前置知识

这些内容如果感兴趣可以看一下,不看也不妨碍配置环境,因为我们会一步步教你配置。(但建议还是看一下,毕竟内容详尽)

C/C++编译器有哪些

注意我们说的是编译器,而不是集成开发环境(IDE,Integrated Development Environment)。我们平常用的Codeblocks,Visual Studio Code,Dev C++等软件都是开发环境,而不是编译器。

常用的C/C++编译器(更确切地说是编译器套件)有:GCC、MinGW、MSVC等。不同的编译器附有不同的库文件,如果某段代码只用了标准库,那么这段代码很可能用任意C/C++编译器都可以编译通过;而如果某段代码用了特定编译器独有的库文件,那这段代码很可能只能用特定编译器才能编译通过,甚至对该编译器的版本也有要求。

Windows系统的环境变量

什么是环境变量

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息(不好理解)。

按照下面的方式查看Windows 10的环境变量

可以看到环境变量分为两部分:用户变量和系统变量

  • 用户变量:只对当前用户生效,优先级高于系统变量
  • 系统变量:对所有用户生效

你也可以将环境变量理解为一个指针。我们在环境变量中定义一个名为“JAVA_HOME”的变量,它指向jdk的安装目录。在某段代码中你可能经常使用jdk作为参数,但如果jdk的安装目录变了,怎么办?你在程序中如果直接使用jdk的绝对路径,那你就从代码中找出来一个个地改吧;而如果你在程序中使用JAVA_HOME这个环境变量,当jdk的安装目录发生变化时,你只要改一下JAVA_HOME的内容即可,而你的代码无需任何修改,因为你的代码使用的是JAVA_HOME,而不是jdk的绝对路径。

环境变量有什么用

想象这样一个场景:你编写了一个个性化的计算器软件,软件的路径为:D:\softwares\myself\calc.exe

当你每次启动时,要么用文件管理器找到这个软件双击运行,要么通过命令行

D:\softwares\myself\calc.exe

执行。诚然,这两种方式耗费精力都差不多,因为calc.exe并没有位于很深层的目录下。那如果calc.exe位于第10层,甚至第100层目录呢,是不是每次打开这个软件很费劲?因为你要么需要打开100层文件夹,要么在命令行输入calc.exe的路径,都是很费劲的方法(当然你可以创建快捷方式,但我们先不考虑这种方法)。

这时候,你就可以把calc.exe所在的目录添加到用户变量的

Path

变量下(你也可以添加到系统变量的

Path

下,这样就对所有用户生效了),这样每次执行calc.exe都不需要在命令行中输入那么一长串路径,而只需要输入calc.exe或者calc即可。

Path环境变量

Path

是个很重要的环境变量,他里面存储的一般是一系列可执行文件的目录。

下图所示是系统变量中的

Path

存储的内容,每一行代表一个目录,许多目录都是以“bin”(binary的缩写)结尾,代表该目录下存储了一些二进制的可执行文件。执行这些目录下的可执行文件不需要加一长串的路径,只需要在命令行输入可执行文件的名称即可。

其他环境变量

比如我们前面提到的“JAVA_HOME”环境变量,这其实就是一个普通的环境变量。你可以随便定义自己的环境变量,比如

isjks:wwoqsi

。你可以在命令行中执行

echo %isjks%

,会输出

wwoqsi

。当然这个并没有任何意义,我只是告诉你你可以随便定义自己的环境变量,无论这个变量有没有什么用。

在上面一张图中,我们发现有些被百分号“%”包裹起来的东西,这些被包裹起来的,其实是已经定义的环境变量。比如

SystemRoot

的内容就是“C:\WINDOWS”。有些环境变量并没有在环境变量列表中被列出来,因此无法直接看到它的值。如果你对任何环境变量感兴趣,可以在命令行中执行

echo %%

来查看它代表的内容。

安装Visual Studio Code

这个没有难度,自己安装即可。vscode安装完成后会把自己加到环境变量,提示需要重启一下电脑。

安装VIsual Studio及相关附件

在这里下载installer,选择社区版即可。

接下来运行安装器,需要下载一些东西,之后如下图安装Community版

另外还需要勾选“使用C++的桌面开发“,这会安装Windows SDK和MSVC工具链。需要注意的是,如果你正在使用Windows10系统,在右侧”安装详细信息“里面取消勾选”Windows 11 SDK“,并且往下找到”Windows 10 SDK“并勾选。Win11 SDK能不能在Win10上面工作我没有研究。接下来点击安装即可,可能会花费10分钟左右的时间,具体看你的网络状况。

安装完成之后启动Visual Studio。

在Visual Studio中编写C++程序

如下图所示,创建一个C++控制台应用。

VS已经自动写了一个HelloWorld程序,按照它的提示运行这个程序,可以看到一个在命令行窗口输出了“HelloWorld”。至此可验证相关的工具都已经安装完成并正常工作。

程序是如何执行的

为什么我们什么都没有配置,程序就跑起来了,而VS Code却不行?

当然是Visual Studio已经给我们配置好了。而VS Code就需要我们手动配置了。

右键点击解决方案,点击属性,会弹出一个属性页,如下图所示。

在这一页可以看到很多以$符开头的变量名称,像极了前面提到的环境变量。

切换到“VC++目录”这个标签页,可以看到更多以$符开头的变量。

可以看到,这个标签页定义了一些外部文件目录和库目录,这些定义是必须的,正是因为VS Code并没有这些定义,所以它不能跑C++程序。

点击“库目录”,在出现的下拉箭头中选择“浏览”,会出现一个窗口,在这个窗口中点击“宏”,就会出现以$开头的键值对,这就是Visual Studio预定义的一些内部变量(我也不知道称之为什么,暂且称为“内部变量”),是不是很像之前提到的环境变量

好了,现在我们应该了解了,Visual Studio在创建C++项目时就帮我们配置好了比如库目录这些东西,VS Code之所以不能跑C++程序就是因为缺少这些配置。

设置环境变量

下面就不多叙述了,总体来说就是把VS Code运行C++程序需要的依赖添加到环境变量中,接下来环境变量以

K:V

形式表达。另外还需要注意,如果你安装的是VS2022,那么安装目录为

C:\Program Files\Microsoft Visual Studio\2022\Community

;而如果是低于2022的版本,比如2019,它的安装目录为

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community

。发现了吗?主要差别就是2022把安装目录挪到了

Program Files

里面,而不是

Program Files (x86)

,所以接下来的配置需要根据你自己的情况做一些更改。

  1. 系统环境变量添加条目:

VCTools: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools

  1. 系统环境变量添加条目:

WIN10KITS: C:\Program Files (x86)\Windows Kits\10

  1. 系统环境变量添加条目:

MSVC_VERSION: 14.37.32822

  1. 系统环境变量添加条目:

WIN_SDK_VERSION: 10.0.20348.0

  1. 系统环境变量添加条目:

INCLUDE: %VCTools%\MSVC%MSVC_VERSION%\include;%WIN10KITS%\Include%WIN_SDK_VERSION%\ucrt;%WIN10KITS%\Include%WIN_SDK_VERSION%\um;%WIN10KITS%\Include%WIN_SDK_VERSION%\shared;

  1. 系统环境变量添加条目:

LIB: %WIN10KITS%\Lib%WIN_SDK_VERSION%\um\u0064;%WIN10KITS%\Lib%WIN_SDK_VERSION%\ucrt\u0064;%VCTools%\MSVC%MSVC_VERSION%\lib\u0064;

  1. Path系统环境变量添加条目:

%VCTools%\MSVC%MSVC_VERSION%\bin\Hostx64\u0064

第1、3、4条的内容需要根据你的实际情况修改。

把上面七条环境变量按顺序添加即可(后面3条是基于前面4条的,如果你看过前面的环境变量部分就会知道,后面三条可以直接复制)

验证环境变量

打开命令行,按下图输入命令,应该和我的输出类似

配置VS Code的环境

上面环境变量已经配置结束,接下来开始配置VS Code。

打开Windows命令行,依次执行一下命令:

mkdir CppTest

: 创建CppTest文件夹

cd CppTest

:进入CppTest文件夹

type nul > hello.cpp

: 创建hello.cpp空文件

code .

:使用VS Code打开当前目录

接下来VS Code打开并弹窗,选择信任文件夹,你就可以看到有一个hello.cpp空文件,在里面写一个HelloWorld。

忘记说了,你还要在VS Code的插件市场安装下图这个插件

现在你的VS Code应该是这样的

接下来跟我操作

在上方搜索框输入

Edit Configurations (UI)

,点击高亮的选项,之后会弹出新标签页,是一些配置选项,选择默认直接关掉标签页即可,之后会生成一个隐藏文件夹

.vscode

,里面有自动生成的

c_cpp_properties.json

文件

在上方搜索框输入

Default Build Task

,点击高亮的选项,并选择

C/C++ cl.exe 生成活动文件

,之后会在

.vscode

文件夹自动生成

tasks.json

之后点击菜单栏“运行 - 以非调试模式运行“,调试器选择”C/C++ (Windows)“,之后会在控制台打印”Hello World“

all done!

一些疑问

为什么我们添加的环境变量的Key是LIBINCLUDE?有什么特殊规定吗?cl.exe是什么?

强烈建议阅读微软官方文档

我就不瞎解释了,因为我理解也不太够

本文对许多技术细节的解释并不充分,甚至有误,因此如果你对本文有任何见解,欢迎指正

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号