如何在 Visual Studio 2015 中使用 clang 为 Windows 编译 C++

How to compile C++ for Windows with clang in Visual Studio 2015

据我了解,Visual Studio 2015 随 clang 一起提供。首先我虽然这只适用于 Android 和 iOS 应用程序,但根据 this article 也应该可以将 clang++ 前端用于 Windows 程序。但是,我找不到相应的选项。

所以请你向我解释一下,我如何在 c++ 项目(在 VS2015 RC 社区版中)中将使用的编译器更改为 clang。

据我了解,Clang 和 GCC 都随 Android 和 iOS 跨平台 SDKs/tools 一起提供 Visual Studio 2015。

据我所知,它只允许我在拥有这些跨平台项目之一时选择那些。

使用 GLES C++ 应用程序的模板项目,您可以获得以下选项:

而对于 Windows C++ 应用程序,您会看到下面的对话框,您可以在其中看到 Windows 目标平台呈灰色且只读,这意味着您可能为每个平台准备了一组工具包目标平台,但您根本无法更改它,至少目前是这样。

尽管不知道如何将普通 VS 项目转变为跨平台项目,但您很可能只能使用第 3 方编译器开箱即用地定位 Android 或 iOS。

不过,可以像安装 XP 工具包一样将 Clang 作为另一个工具包安装。因此,也许这只是有人摆弄它并使其在已安装的情况下可用的问题。

警告:这个答案是 VS2015 之前的更新 1,没有 "Clang with Microsoft CodeGen" 选项。

在阅读链接 post 尤其是评论后,我开始明白,这不是 VS2015 RC 附带的功能,而是未来可能的功能,例如在 SP 中或(更有可能)与下一版本的 VS 一起提供。

正如 sjdowling 所提到的,目前(2015 年 10 月,clang 3.7)你能做的最接近的事情是下载并安装 llvm for windows. This should give you a LLVM-vs2014 platform toolset option. For me it works for simple test programs, but apparently this version of "clang-vs" seems to not yet support exceptions. However, according to these notes,clang 3.8 应该主要解决这个问题。

从 VS2015 Update 1 开始,您可以通过新项目 window 安装“Clang with Microsoft CodeGen”模板,浏览至已安装 -> 模板 -> Visual C++ -> 跨平台。

然后您将能够在任何 Windows C++ 项目的属性页面中选择带有 Microsoft CodeGen v140_clang_3_7 平台工具集的 Clang 3.7。

Clang 具有一组完全不同的命令行选项,因此在使用 v140_clang_3_7 工具集时,项目属性必须使用与 Clang 兼容的选项,这些选项可以被识别为以 - 而不是 /。例如,调试信息格式 属性 设置为“完整调试信息 (DWARF2) (-g2 -gdwarf-2)”,启用 C++ 异常 属性 设置为“是 (-fexceptions)” .

this blog post 中有更多信息。

虽然上述解决方案有效,但它们要求您安装 clang,它在 visual studio 2015 安装中默认处于关闭状态。接受的答案确实显示了如何安装它,尽管下一页会要求您关闭 visual studio 您是 运行 来自的新项目。

如果有人想知道如何安装 clang,因为它没有出现在他们的列表中,这里是另一个解决方案:

  1. 控制面板->程序->程序和功能。
  2. 右键单击“Microsoft Visual Studio Enterprise 2015”(或 “微软视觉
  3. Studio 15 Preview”如果有下个版本的预览 Visual Studio 已安装)
  4. 点击“更改”
  5. 点击“修改”
  6. Select“Clang with Microsoft CodeGen”——2016 年 3 月发布。

https://blogs.msdn.microsoft.com/vcblog/2016/03/31/clang-with-microsoft-codegen-march-2016-released/