
MSVC使用指南
0.引入
关于C语言程序的编写,想必大都是这样开始的吧。第1步,下载一个IDE,例如Dev-C++、Code::Blocks(反正我入门的时候就是用这两个);第2步,新建一个项目;第3步,把代码写进去;第4步,点一下按钮构建和运行。这一套流程下来,C语言的语法肯定可以过关了。到后来我用上了Visual Studio,本质也差不多,只是比之前那些感觉更复杂。
直到有一天我尝试在Linux上写C语言程序,才感受到差异。那台Linux电脑上只有一个VS code,我以为如往常一样进入,但是死活找不到构建按钮,去查了一下才知道,要使用指令
gcc xxx.c这里的gcc就是C语言的编译器。
那么Windows有没有自己的gcc呢?答案是肯定的,否则那些IDE如何把C语言代码变成程序呢?其中Dev-C++和Code::Blocks用的是mingw64,也就是gcc工具在Windows上的移植版。既然是“移植版”,这就说明Windows有自己的C语言编译工具原住民,它就是MSVC(Microsoft Visual C++),Visual Sutdio就是使用MSVC进行C语言编译的。而gcc所属的工具链叫做GNU,一般是Linux家族所用的编译器(除了gcc/GNU,Linux也可以用clang/LLVM编译器套件)。
总结:
| 工具套件名称 | 常用命令行程序 | 归属厂商 / 项目 |
|---|---|---|
| GCC | gcc / g++ | GNU 项目 |
| Clang(LLVM) | clang / clang++ | LLVM 基金会 |
| MSVC | cl.exe | 微软 |
1.MSVC介绍
MSVC(全拼Microsoft Visual C++,简称Visual C++、VC)是微软公司开发的C/C++开发工具。和它的同行们GCC、Clang (LLVM)比较,MSVC原生只能在Windows上运行。它遵循C/C++的官方标准,但同时也有自身专属语法、关键字、规则等,自带C/C++标准库实现,原生支持Windows SDK,是Windows软件开发的主流工具。
2.MSVC下载
在介绍如何下载MSVC之前,让我们先观察其他工具在Windows上是如何下载安装的。市面上绝大多数工具,包括但不限于Java(jdk)、python、.NET、mingw64(gcc的Windows移植),核心的方法就两种:1.下载exe或msi安装包,跟随向导程序完成安装;2.下载zip或其他格式的压缩包,解压后添加到环境变量PATH后直接使用。我个人倾向后者,可以做到精细控制。但是MSVC的下载安装非常特殊,官方给出的唯一下载安装方式是通过Visual Studio Installer进行,不支持压缩包下载。
为什么微软不做一个压缩包呢?核心问题在于MSVC非常庞大,依赖和组件繁多,工具集版本、SDK版本、库版本之间必须严格匹配,否则极易产生诡异的报错,且MSVC存在系统注册、路径依赖感知,和系统耦合极高,压缩包式的便携移动极易产生隐形bug。相反,刚才提到的其他工具Java、python、.NET、mingw64,它们从一开始设计就是逻辑就是尽量做成一个独立程序,因此在移植和依赖问题上问题更少。
虽然没有压缩包,但是微软给了一个离线部署选项,使用以下命令行即可完成。
vs_BuildTools.exe --layout D:\MSVC_Offline --add Microsoft.VisualStudio.Workload.VCTools但我个人还是选择和Visual Studio一起安装,因为Visual Studio+MSVC生态非常完善,PDB 符号支持、实时调试、内存泄漏检测、地址 sanitizer、性能探查器、图形调试(DirectX)、WinDbg等体验更好。
步骤1:从官网下载VisualStudioSetup.exe;
步骤2:运行VisualStudioSetup.exe,安装Visual Studio Installer;
步骤3:打开Visual Studio Installer,选择安装Visual Studio(本文全部选择2022);
步骤4:在“工作负荷”中选择“适用C++的桌面应用开发”,这会安装MSVC和其依赖的其他组件。
3.MSVC使用
在安装结束之后,打开开始菜单,我们会发现在“Visual Studio”目录下出现了这些内容:
x64 Native Tools Command Prompt for VS 2022
x64_x86 Cross Tools Command Prompt for VS 2022
x86 Native Tools Command Prompt for VS 2022
x86_x64 Cross Tools Command Prompt for VS 2022
Debuggable Package Manager
Developer Command Prompt for VS 2022
Developer PowerShell for VS 2022
这些全部都是命令行环境,如何识别它们的意思呢?
1.x86=32位,x64=64位;
2.Native=本机编译,工具架构和最终生成程序架构一致;Cross=交叉编译,在当前系统上编译另一种架构的程序;
3.现代的Windows一般是x64架构,兼容x86。
最常用的就是x64 Native Tools Command Prompt for VS 2022,64位工具编译64位程序;
x64_x86 Cross Tools Command Prompt for VS 2022则是64位工具编译32位程序,为了兼容老旧设备可能使用;
x86 Native Tools Command Prompt for VS 2022是32位工具编译32位程序,现在使用极少;
x86_x64 Cross Tools Command Prompt for VS 2022是32位工具编译64位程序,几乎不使用;
Developer Command Prompt for VS 2022是通用开发环境,默认x86(32位)工具链;
Developer PowerShell for VS 2022和Developer Command Prompt for VS 2022完全一致,只是在Power Shell中套壳;
Debuggable Package Manager用于 MSIX/UWP 应用包管理(Windows 商店应用),普通开发基本用不上。
综上,直接使用x64 Native Tools Command Prompt for VS 2022即可
4.一个例子
到此,MSVC环境配置完毕,可以试着写一个简单程序 test.cpp
#include <stdio.h>int main(){ printf("Ciallo~ MSVC!"); return 0;}然后打开x64 Native Tools Command Prompt for VS 2022
cd C:\path\to\your\projectcl test.cpp于是生成了test.obj和test.exe,运行test.exe,输出Ciallo~ MSVC!
5.本文结束
本文介绍了MSVC的安装和使用方法,提供了一条脱离IDE按钮构建的命令行直接和编译器交互的程序编译方式。MSVC的配套工具种类繁多复杂,不是一篇文章可以全部讲述清楚的,后续会更新和补充更多其他工具的具体用法。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
Code::Blogs
