当前位置: 首页 > backend >正文

Visual Studio笔记:MSVC工具集、MSBuild

1. MSVC工具集

1.1 什么叫MSVC工具集

也可以说Visual Studio平台工具集(Platform toolset).
这些工具包括 C/C++ 编译器、链接器、汇编程序和其他生成工具以及匹配的库和头文件。
Visual Studio 2015、Visual Studio 2017 和 Visual Studio 2019 是二进制兼容的。 工具集的主版本(仍为 14)显示了这一点。这里提一下版本的通常约定:

  • 主版本号(x):变化可能导致不兼容(如接口删除或修改)。
  • 次版本号(y):通常向下兼容(新增接口但保留旧接口)。
  • 修订号(z):完全兼容(仅修复错误或优化)

在 Visual Studio 2019 或 Visual Studio 2017 中编译的项目与 2017 和 2015 项目 ABI 后向兼容。 自 Visual Studio 2015 以来,次版本对于每个版本都按 1 更新:

  • Visual Studio 2015:v140
  • Visual Studio 2017:v141
  • Visual Studio 2019:v142
  • Visual Studio 2022:v143

Microsoft C++ (MSVC) 编译器工具集也可以作为独立的包下载。 如果不打算使用 Visual Studio IDE,则不需要安装它(理解为可以不安装visual studio IDE,仅安装msvc 工具集,打开安装器,不选择工作负载,只在单个组件下选择自己需要的msvc工具集即可。但安装后,实际上安装了IDE,但相比占的磁盘空间少了很多,应该是少安装了很多东西)。我本机安装了两个MSVC 工具集:
在这里插入图片描述
打开目录看下:
在这里插入图片描述
Bin目录下有cl.exe, link.exe等等
在这里插入图片描述

1.2. 通过命令行使用MSVC工具集

https://learn.microsoft.com/zh-cn/cpp/build/building-on-the-command-line?view=msvc-170

在 Visual Studio 安装程序中选择一个 C++ 工作负载(如使用 C++ 的桌面开发)时,它会安装 Visual Studio平台工具集。 平台工具集具有用于特定 Visual Studio 版本的所有 C 和 C++ 工具。 这些工具包括 C/C++ 编译器、链接器、汇编程序和其他生成工具以及匹配的库和头文件。 可以在命令行中使用所有这些工具。 Visual Studio IDE在内部也使用这些工具。 可使用单独的 x86 托管和 x64 托管的编译器和工具来生成 x86、x64、ARM 和 ARM64 目标代码。用于特定主机和目标生成体系结构的每组工具都存储在其自己的目录中。

需要设置几个特定的环境变量,这些工具才能正常运行。 这些变量用于将工具添加到路径,并设置包含文件、库文件和 SDK 的位置。 为了便于设置这些环境变量,安装程序会在安装期间创建自定义的命令文件或批处理文件。可运行其中一个命令文件,以设置特定的主机和目标生成体系结构、Windows SDK 版本和平台工具集。

命令文件主机和目标体系结构

  • 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 和平台选项。 有关支持的选项列表,请使用 /help 参数进行调用。

默认情况下,Visual Studio IDE 使用基于 MSBuild 的本机项目生成系统。 你可以直接调用 MSBuild来生成项目,而无需使用 IDE。 还可以通过使用 devenv 命令使用 Visual Studio 来生成项目和解决方案。 VisualStudio 还支持基于 CMake 或 NMake 的生成系统。

  • MSBuild: 使用 MSBuild (msbuild.exe) 和项目文件 (.vcxproj) 来配置生成并调用工具集,而无需加载 Visual Studio IDE。 这相当于在 Visual Studio IDE 中运行“生成”项目或“生成解决方案”命令。 当你在命令行进行生成时,MSBuild 比 IDE 更具优势。 你无需在所有的生成服务器和生成管道上安装完整的 IDE。 这可避免 IDE的额外开销。 MSBuild 在容器化生成环境中运行,并支持二进制记录器。
  • DEVENV: 将 DEVENV (devenv.exe) 与命令行开关(例如,/Build 或 /Clean)结合使用,可在不显示 Visual Studio IDE 的情况下执行某些生成命令。
  • CMake: CMake (cmake.exe) 是一种跨平台开源工具,用于定义在多个平台上运行的生成过程。 CMake 可以为它支持的平台(例如 MSBuild 和 Make)配置和控制本机生成工具。 有关 CMake 的详细信息,请参阅 CMake 文档。
  • NMAKE: 使用 NMAKE (nmake.exe) 来通过使用传统的生成文件以生成 C++ 项目。

2. MSBuild

MSBuild (msbuild.exe) 根据项目文件 (.vcxproj) 来配置生成并调用工具集,而无需加载 Visual Studio IDE。 这相当于在 Visual Studio IDE 中运行“生成”项目或“生成解决方案”命令。 当你在命令行进行生成时,MSBuild 比 IDE 更具优势。 你无需在所有的生成服务器和生成管道上安装完整的 IDE。 这可避免 IDE 的额外开销。 MSBuild 在容器化生成环境中运行,并支持二进制记录器。

http://www.xdnf.cn/news/10254.html

相关文章:

  • 【HW系列】—日志介绍
  • Excel快捷键
  • ESP8266常用指令
  • LeetCode Hot100刷题——划分字母区间
  • 第十四篇:MySQL 运维中的故障场景还原与排查实战技巧
  • 华为计试——刷题
  • 计算机网络之路由表更新
  • 第四十一天打卡
  • Unity中的AudioManager
  • 完整解析 Linux Kdump Crash Kernel 工作原理和实操步骤
  • embbeding 视频截图
  • AI Agent在测试设计中的应用
  • 数据治理系统是什么?数据治理工具有什么用?
  • 复刻真实世界的虚拟系统Goal
  • C语言面试题【01】
  • RSTP技术解密:高效组网与实战指南
  • JVM内存模型(运行时数据区)
  • 2025年素养大赛编程赛项练习题
  • python进程hung住如何找到问题所在
  • 下载和安装whl文件
  • 解密震颤背后的神经隐情
  • 基于NXP例程学习CAN UDS刷写流程
  • 基于频分复用导频的MMSE信道估计方法设计与仿真
  • 虚拟应用(vapp)、NICE DCV传输协议、云桌面(VDI)的区别
  • 深度学习实战110-基于深度学习的工业系统故障诊断技术研究(卷积网络+注意力机制模型)
  • 将ipynb文件转换为markdown格式文件
  • 前端实现大文件分片上传:原理、实现与优化
  • 借助DS用python帮你编写脚本(辅助开发测试)
  • ToolsSet之:十六进制及二进制编辑运算工具
  • 小工具合集