前言
本篇文章介绍在window环境使用微软的MSVC编译器
来编译C++的流程
下载安装MSVC
-
首先下载编译器,不需要下载完整的vs。
打开网址https://visualstudio.microsoft.com/zh-hans/downloads/,找到用于Visual Studio的工具
选项,下载Visual Studio 2022生成工具
-
打开下载好的
vs_buildTool.exe
,安装MSVC工具集
图片中的这三个组件是针对不同平台的工具集,如果你不需要生成ARM指令集的代码,你只需要下载第一个就可以了,当然如果你需要window平台相关的功能,你还要下载windows SDK
配置环境变量
安装完成MSVC工具集之后,默认的安装文件夹为C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools
,该工具集包括C/C++编译器、链接器、汇编程序和其他生成工具以及匹配的库和头文件。我们在使用汇编器编译汇编代码,使用链接器链接不同目标文件的过程中,会用到很多程序集自带的库或者文件。这个需要配置,微软官方的一种说法是
MSVC 命令行工具使用 PATH、TMP、INCLUDE、LIB 和 LIBPATH 环境变量,还使用特定于已安装工具、平台和 SDK 的其他环境变量。 即使是简单 Visual Studio 安装,也可以设置二十或更多个环境变量。
所以,鉴于设置的复杂性,在安装MSVC程序集的时候,安装程序会在安装期间创建自定义的命令文件
或批处理文件
,也就是说,我们有两种配置环境的方式:
可运行其中一个命令文件
,以设置特定的主机和目标生成体系结构、Windows SDK 版本和平台工具集。可运行其中一个批处理文件
,以设置特定的主机和目标生成体系结构、Windows SDK 版本和平台工具集。
运行命令文件
-
在桌面上,打开Windows的“
开始
”菜单。 在Windows 11中,选择“所有应用
”按钮,打开已安装应用的列表。 在Windows 10中,列表在左侧打开。 向下滚动列表,找到并打开你的Visual Studio版本的文件夹
(不是应用),例如,Visual Studio 2022。 -
在该文件夹中,为Visual Studio版本选择“
Developer Command Prompt for VS 2022
”。 此快捷方式启动开发人员命令提示符窗口,该窗口使用32位x86本机工具的默认生成体系结构来生成32位x86本机代码。 如果你喜欢非默认的生成体系结构,请在VC文件夹下
选择本机或兼容工具命令提示符之一,以指定主机和目标体系结构- Developer Command Prompt for VS 2022 - 将环境设置为使用32位x86本机工具生成32位x86本机代码。
- x86 Native Tools Command Prompt for VS 2022 - 将环境设置为使用32位x86本机工具生成32位x86本机代码。
- x64 Native Tools Command Prompt for VS 2022 - 将环境设置为使用64位x64本机工具生成64位x64本机代码。
- x86_x64 Cross Tools Command Prompt for VS 2022 - 将环境设置为使用64位x64本机工具生成32位x86本机代码。
- x64_x86 Cross Tools Command Prompt for VS 2022 - 将环境设置为使用64位x64本机工具生成32位x86本机代码。
以管理员权限运行对应的窗口,就能配置好所有的环境变量
批处理文件
在C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools下的VsDevCmd.bat
批处理文件和Developer Command Prompt for VS 2022
功能类似,使用32位x86本机工具的默认生成体系结构来生成32位x86本机代码
在C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build下存在多个批处理文件,针对不同体系结构的本机工具生成不同体系结构的本机代码
命令文件 主机和目标体系结构
- vcvars32.bat 使用 32 位 x86 本机工具生成 32 位 x86 代码。
- vcvars64.bat 使用 64 位 x64 本机工具生成 64 位 x64 代码。
- vcvarsx86_amd64.bat 使用 32 位 x86 本机兼容工具生成 64 位 x64 代码。
- vcvarsamd64_x86.bat 使用 64 位 x64 本机兼容工具生成 32 位 x86 代码。
- vcvarsx86_arm.bat 使用 32 位 x86 本机兼容工具生成 ARM 代码。
- vcvarsamd64_arm.bat 使用 64 位 x64 本机兼容工具生成 ARM 代码。
- vcvarsx86_arm64.bat 使用 32 位 x86 本机兼容工具生成 ARM64 代码。
- vcvarsamd64_arm64.bat 使用 64 位 x64 本机兼容工具生成 ARM64 代码。
- vcvarsall.bat 使用参数指定主机和目标体系结构、Windows SDK 和平台选项。 有关支持的选项列表,请参考https://learn.microsoft.com/zh-cn/cpp/build/building-on-the-command-line?view=msvc-170
创建第一个文件
- 由于我的电脑是x64,我想生成32位x86本机代码,我使用批处理文件的方式,我在自己定义的一个文件夹(作为测试使用)打开cmd。然后执行*“C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsamd64_x86.bat”*
- 在文件夹下创建汇编文件hello.c
- 输入一下测试代码
#include <stdio.h> int main() { printf("Hello,world"); int a = 0; scanf("%d",&a); }
- 输入编译指令
cl hello.c
,会生成hello.exe - 输入hello