我可以下载不带Visual Studio的Visual C++命令行编译器吗?

116

根据标题,我不想下载整个Visual C++安装程序,只需要"cl.exe"和其他在Windows上编译和链接C ++程序所需的程序。


1
我将“不可能”的答案标记为正确,因为据我所知,单独下载命令行编译器是不可能的,这也是问题所问的。我从Nayana的答案中了解到,可以在没有安装Visual Studio的情况下安装CLI编译器(通过手动移动所需文件),但问题特别询问了如何在不下载整个Visual Studio的情况下下载软件包。 - magnus
3
@user1420752的意思是,作为一种礼貌,你应该等待足够长的时间让其他人回复。即使一个答案“已经足够好了”,也可能会有不同时区的人提供更好的答案。在这里友好相处很重要。 - david.pfx
6
我刚遇到了这个问题,感到非常沮丧,必须要留言。现在我被迫下载3GB的内容才能使用一个命令行工具,而我猜想它本身只有几百MB!真是气愤:( - user21037
13
现在它已被微软支持。 http://blogs.msdn.com/b/vcblog/archive/2015/11/02/announcing-visual-c-build-tools-2015-standalone-c-tools-for-build-environments.aspx - Roland Barbe
2
只是提醒一下:虽然你可以使用MSVC2015 Build Tools作为命令行编译器,但请注意,这至少需要3GB的空间(对于Windows 8.1 / 10 SDK支持需要更多),而好老的带有IDE的MSVC Express 2010(你甚至可以不打开它,只需使用cl.exe编译)不到0.5 GB。 MSVC2015 Build Tools甚至不会设置PATH,你会收到找不到文件夹的错误... - user1299518
显示剩余8条评论
11个回答

21

正如所说,无法实现您想要的功能。您需要下载整个4-6GB+软件包。微软的部署有点糟糕。

但是,实际上没有必要安装所有文件。如果您可以手动安装,可以从软件包中提取单个组件,并将它们放入更有组织的目录树中。

例如,我发现以下设置是在x86环境中使用当前MSVC2013编译器所需的最低配置:

  • vc_compilerCore86.msi:MSVC工具链;
  • vc_compilerCore86res.msi:MSVC工具链 MUI 资源;
  • vc_librarycore86.msi:MSVC库文件;
  • vc_LibraryDesktopX86.msi:更多的MSVC库文件;
  • Windows Software Development Kit for Windows Store Apps-x86_en-us.msi:Windows SDK文件和相关工具(rc.exemt.exe等);
  • Windows Software Development Kit-x86_en-us.msi:更多的Windows SDK文件(特别是 WinSock2.hWS2_32.lib,也可能是其他文件)。

请记住,您可以运行 msiexec /a <msifile> TARGETDIR="<path>" 提取MSI文件的内容(如果您正在批处理,则需要添加 /quiet 参数)。当然,您也可以通过调查软件包中的MSI文件将更多内容放入您的软件包中。特别是上述设置缺少了最新的MSBuild工具,因为我不需要它们。通常情况下,文件会在多个MSI文件之间散布,因此祝你好运。

我有一个50MB (!!!)的7z文件,其中包含了这个设置,用于本地部署,但由于微软的许可限制,我无法公开共享。


更新:

以下是MSVC2015工具、头文件和库的MSI文件列表:

packages\VisualC_D14\VC_Tools.Core\VC_Tools.Core.msi
packages\VisualC_D14\VC_Tools.Core.Res\VC_Tools.Core.Res.msi
packages\VisualC_D14\VC_Tools.X86.Base\VC_Tools.X86.Base.msi
packages\VisualC_D14\VC_Tools.X86.Base.Res\VC_Tools.X86.Base.Res.msi
packages\VisualC_D14\VC_Tools.X86.Nat\VC_Tools.X86.Nat.msi
packages\VisualC_D14\VC_Tools.X86.Nat.Res\VC_Tools.X86.Nat.Res.msi
packages\VisualC_D14\VC_Tools.X86.X64\VC_Tools.X86.X64.msi
packages\VisualC_D14\VC_Tools.X86.X64.Res\VC_Tools.X86.X64.Res.msi
packages\VisualC_D14\VC_PremTools.X86.Base\VC_PremTools.X86.Base.msi
packages\VisualC_D14\VC_PremTools.X86.Base.Res\VC_PremTools.X86.Base.Res.msi
packages\VisualC_D14\VC_PremTools.X86.Nat\VC_PremTools.X86.Nat.msi
packages\VisualC_D14\VC_PremTools.X86.Nat.Res\VC_PremTools.X86.Nat.Res.msi
packages\VisualC_D14\VC_PremTools.X86.X64\VC_PremTools.X86.X64.msi
packages\VisualC_D14\VC_PremTools.X86.X64.Res\VC_PremTools.X86.X64.Res.msi
packages\VisualC_D14\VC_CRT.Headers\VC_CRT.Headers.msi
packages\VisualC_D14\VC_CRT.X86.Desktop\VC_CRT.X86.Desktop.msi
packages\VisualC_D14\VC_CRT.X86.Store\VC_CRT.X86.Store.msi
packages\VisualC_D14\VC_CRT.X64.Desktop\VC_CRT.X64.Desktop.msi
packages\VisualC_D14\VC_CRT.X64.Store\VC_CRT.X64.Store.msi
packages\VisualC_D14\VC_CRT.Redist.Res\VC_CRT.Redist.Res.msi
packages\VisualC_D14\VC_CRT.Redist.X86\VC_CRT.Redist.X86.msi
packages\VisualC_D14\VC_CRT.Redist.X64\VC_CRT.Redist.X64.msi
packages\VisualC_D14\VC_ATL.Headers\VC_ATL.Headers.msi
packages\VisualC_D14\VC_ATL.X86\VC_ATL.X86.msi
packages\VisualC_D14\VC_ATL.X64\VC_ATL.X64.msi
packages\VisualC_D14\VC_MFC.Headers\VC_MFC.Headers.msi
packages\VisualC_D14\VC_MFC.X86\VC_MFC.X86.msi
packages\VisualC_D14\VC_MFC.X64\VC_MFC.X64.msi
packages\VisualC_D14\VC_PGO.Headers\VC_PGO.Headers.msi
packages\VisualC_D14\VC_PGO.X86\VC_PGO.X86.msi
packages\VisualC_D14\VC_PGO.X64\VC_PGO.X64.msi
packages\Win10_UniversalCRTSDK\Universal CRT Headers Libraries and Sources-x86_en-us.msi

这是WinSDK10工具、头文件和库的MSI文件列表(需要单独下载):

Installers\Windows SDK Desktop Headers Libs Metadata-x86_en-us.msi
Installers\Windows SDK Desktop Tools-x86_en-us.msi
Installers\Windows SDK for Windows Store Apps Headers Libs-x86_en-us.msi
Installers\Windows SDK for Windows Store Apps Tools-x86_en-us.msi

这些内容包括 x86x64 版本(我没有考虑 ARM 或 IA64)。两个捆绑包都使用 LZMA 压缩,将产生一个 185MB 的文件。


6
加入 vc_LibraryDesktopX64.msi 看起来是 x64 构建的最低要求。 - nwellnhof
@Alek,我在哪里可以获取那些*.MSI文件? - An Hoa
@AnHoa:对于MSVC,您可以从ISO文件中提取它们。对于WinSDK,您需要下载网络安装程序并运行“setup.exe /layout <path>”。网络安装程序将会把它们下载到指定的目录中(但不会安装)。 - alecov
Visual C++ Build Tools - IInspectable
所以你的意思是,如果我从现有的安装中复制一堆目录,那么编译器就可以工作了?这些目录可能来自VC和Common7。对吗? - Slava
在此处发布了一个功能请求 here - Foad S. Farimani

16

2014年,你无法单独从微软下载Visual C++编译器。

曾经可以,后来你只能在Platform SDK中获得它。然后,你只能通过安装Visual Studio获取它。

令人高兴的是,在当时,与专业版或通用版一样,Visual Studio Express for Desktop(当时的免费版本)捆绑提供的编译器是完全相同的。

在2015年11月,微软再次开始提供名为Visual C++ Build Tools的独立包中的编译器工具。

微软写道:

C++ Build Tools安装程序将不会在已安装了Visual Studio 2015的计算机上运行。反之(即升级到Visual Studio)是受支持的。

长期情况总是不明朗的。声明:我没有亲自使用过构建工具 - 我必须先卸载Visual Studio。


如果您是企业,则您的员工和承包商除了开源和教育目的允许使用软件外,不得使用该软件来开发或测试您的应用程序。 “企业”是指任何组织及其附属机构,它们共同拥有(a)超过250台PC或用户或(b)每年超过一百万美元(或其他货币等值)的年收入,“附属机构”是指那些通过控制(通过大多数所有权),受控于或与组织共同控制的实体。 - NotAgain
所以,如果我想在公司的构建服务器上编译VC++项目,我不能安装“Microsoft Visual Studio Community 2013”。而且我们也没有Visual Studio的Ultimate版本。 - NotAgain
当你在一个拥有250台以上电脑或超过一百万美元收入的企业工作时,就像我在1990年代所做的那样,获取适当版本的Visual Studio就像说出你需要它一样容易,或者联系IT支持人员,甚至只需自己访问软件集合。或者至少应该是这么容易。使用公司未提供的开发工具通常不是一个好主意,因为其他人会在维护方面遇到问题。 - Cheers and hth. - Alf

9
我使用了Chocolatey,它有一个Visual C++ Build Tools的软件包
这个命令:
choco install visualcpp-build-tools 

将安装最新的2017版本,但您可以选择包括2015发布的旧版本之一。
安装后,Visual Studio 2017文件夹将添加到程序菜单中。它包括各种开发人员命令提示符的快捷方式,其中包括路径中的cl.exe和其他工具。

当然,https://community.chocolatey.org/packages/visualstudio2019buildtools。不过请注意,这是一个不同的软件包。 - GreenhouseVeg

9
截至2019年,微软提供了Visual Studio Build Tools,该工具仅包括编译器、构建工具和SDK。它在所有下载列表中隐藏。

8
看起来是一个网络化的迷你安装程序,大小为1.3MB。无法归档、复制并离线安装。一旦微软关闭他们的服务器,它肯定会很快崩溃,即少于5年。不知道是否可以非交互式地安装。不知道是否可以共存多个版本。不知道如何选择一个特定的版本。与任何Linux发行版甚至自己构建gcc或clang相比,仍然很复杂和晦涩。不了解许可证。令人沮丧。 - Johan Boulé
3
@JohanBoulé 目前,MSDN文档已经涵盖了几乎所有这些主题。例如,可以使用本地缓存网络缓存进行离线安装。 - Max Truxa
4
谢谢你提供的链接。看起来这是一个复杂的过程,需要花费相当长的时间去调查。我认为它们可能会填补那些不想从35GB包中选择各种程序包,只想要裸露的编译器、链接器和核心库的人们的需求,放在一个单独的可移植存档中,我们可以在任何地方提取使用。 - Johan Boulé

4
更新:Visual C++ 2015 Build工具位于此处:http://landinghub.visualstudio.com/visual-cpp-build-tools Visual C++ 2017 Build工具现在已经成为常规VS 2017安装程序的一部分。只需选择您需要的工作负载即可。信息在同一页上。
此链接优先于下面的博客链接,因为它是官方着陆页,并将保持最新。
我在C++团队。如果您对使用VC++ Build工具或MSVC有任何疑问,请随时给我发送电子邮件。我的电子邮件是我的StackOverflow用户名@microsoft.com。

4
链接已过时,不再可用。 - Adrian W

3

我曾试图和你一样做同样的事情。但是微软没有提供独立的编译器。因此,如果您需要 MS C++ 编译器,您必须安装 VS。但是,如果您喜欢冒险,有一个巧妙的方法可以实现。请在此处尝试祝好运!


1
+1。这很有帮助,因为你可以在没有完整安装的情况下让它工作。但我没有将其标记为正确,因为问题是询问是否可以单独下载,而不是完整下载并手动复制和粘贴所需文件。 - magnus

3
在2022年3月21日,我能找到的最好方法就是找到“Visual Studio Community”免费下载(需要使用Microsoft账户登录)。不再有“给我该死的构建工具”的概念了,但有一个承诺只需下载安装程序然后选择所需的工具。于是我下载了安装程序并运行它。
当然,顶层选项都不适用于“给我该死的构建工具”,因此我选择了“单个组件”选项。这提供了一个我不需要的极其庞大的东西列表,但在其中我找到了“MSVC v143-VS 2022 C++ x64/x86构建工具(最新)”,看起来很有希望。我勾选了这个选项,然后被告知他们也会给我“Visual Studio代码编辑器”。
强烈警告我正在安装“无工作负载”,这似乎是一些我永远不会使用的“Visual Studio核心编辑器”的附加垃圾。我拒绝了额外的充气软件。几个吉字节后,它说我“安装完成”,但警告“我们建议尽快重新启动以清理任何剩余文件”。
几十年来(重新)编写脚本以定位微软编译器,我向微软卑躬屈膝地承认他们在防止任何简单方法自动化此过程方面的能力更强。每当我在系统上安装微软编译器时,我都会手动设置一个系统范围的环境变量,指向用于设置工具的shell环境变量的微软批处理文件。今天的机器是一台无许可证的(嘿,微软也同样糟糕,只不过不那么严重!)Windows 10,在那里是通过 <Winkey>-x | 系统 |高级系统设置|环境变量。
我创建了一个名为RLBVCVARS的变量,并将其设置为(在这种特定情况下)c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat。我的便携式Windows开发环境保留一个指向它的别名,所以我可以大多数忽略微软不断引入的破坏性变化到他们的安装方案中。 我认为你必须重新启动计算机才能使“系统”环境变量生效,但嘿,微软无论如何都希望您在安装任何东西后重新启动计算机,因此并不重要。

首次编译时提示找不到"io.h"。回到安装程序。让我们尝试添加"Windows 10 SDK"(有3个版本可供选择!)。大约1GB后,我有了一个io.h并且可以构建我的当前项目。继续前进。


我将这个答案与此答案结合,安装了“MSVC v143 - VS 2022 C++ x64/x86构建工具(最新版本)”,最新的“Windows 11 SDK”,以及“C++ CMake工具 for windows”,“测试工具核心特性 - 构建工具”,以及“Windows通用C运行时库”。第一次尝试就成功了。 - Axel

1
截至撰写本文时(2021年6月23日),以下信息取自为Microsoft C++配置VS Code
以下是重要引用:
“您还可以仅安装C++构建工具,而无需完整的Visual Studio IDE安装。从Visual Studio下载页面向下滚动,直到在所有下载部分下看到Visual Studio工具,然后选择Visual Studio Build Tools的下载。”

enter image description here

这将启动Visual Studio安装程序,它会显示可用的Visual Studio Build Tools工作负载对话框。勾选C++构建工具工作负载并选择安装

enter image description here

注意:您可以使用Visual Studio Build Tools中的C++工具集,以及Visual Studio Code来编译、构建和验证任何C++代码库,只要您还拥有有效的Visual Studio许可证(社区版、专业版或企业版),并且正在积极地使用它来开发该C++代码库。

为了方便起见并避免错误,在运行 Visual Studio Code 时必须通过开发人员命令提示符打开。如果你的目标是生成 x64 位输出,则应使用 x64 开发人员命令提示符打开 VS Code。否则会产生错误。 - Second Person Shooter

1
你可以复制并运行mmozeikothis gist中的Python文件,以便在不安装完整的Visual Studio的情况下下载MSVC编译器/链接器和Windows SDK。

0

4
我已经尝试了上述下载。安装已经完成,因为它提示我未安装Visual Studio,且需要安装。我认为上述安装程序会向现有的Visual Studio安装中添加一个新的编译器,以启用C++11和C++14特性。 - magnus
4
“这个软件包需要预先安装Visual Studio 2013。” - MSalters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接