如何在Visual Studio 2015中使用clang编译C++代码以在Windows上运行

43
据我所了解,Visual Studio 2015自带clang编译器。一开始我认为这仅适用于Android和iOS应用程序,但根据这篇文章的说法,也应该可以在Windows程序中使用clang++前端。然而,我找不到相应的选项。
因此,请您告诉我如何在c++项目中将编译器更改为clang(在VS2015 RC Community Edition中)。

你的意思是从这个页面获取指南,以在Visual Studio中使用clang吗? - sjdowling
@sjdowling:我可能错了,但我不这么认为。从我链接的文章(和其他文章)中,我得到的印象是,应该有一个版本的clang直接与VS一起发布。此外,文章中的作者提到,他们将使用clang作为前端,但仍然使用VC++作为Windows的后端代码生成器。您链接的版本似乎使用llvm作为后端。而且它似乎还不支持VS2015。 - MikeMB
4个回答

27

从 VS2015 Update 1 开始,您可以通过新建项目窗口安装“带有Microsoft CodeGen的Clang”模板,浏览到已安装 -> 模板 -> Visual C++ -> 跨平台。

然后,在任何 Windows C++ 项目的属性页中,您就可以选择 Clang 3.7 with Microsoft CodeGen 的 v140_clang_3_7 平台工具集。

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

有更多信息可在这篇博客文章中了解。

新建项目窗口截图


@MikeMB 更新1 RTM于2015年10月30日发布。http://go.microsoft.com/fwlink/?LinkId=691129 - Oktalist
尝试使用没有更改的“Dynamic Library - Clang 3.7 with Microsoft CodeGen”构建时,出现了LNK1104错误(https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k(LNK1104)&rd=true)。有人遇到过这个问题吗? - Wollan
由于某些原因,我的VS2015更新RC没有这个模板? - paulm
@paulm 更新 RC?更新2已经是 RTM 版本了。在安装过程中选择自定义安装,并确保启用了带有 Microsoft CodeGen 的 Clang。 - Oktalist

11
据我所了解,Clang和GCC都随Android和iOS跨平台SDK/Visual Studio 2015工具一起发布。
根据我的观察,只有在使用其中一个跨平台项目时才能选择它们。
如果使用GLES C++应用程序的模板项目,则会获得以下选项:

enter image description here

对于Windows C++应用程序,您会看到下面的对话框,其中可以看到Windows目标平台被灰色和只读,这意味着您可能有每个目标平台的一组工具包,但您无法更改它,至少现在还不能。

enter image description here

不知道如何将普通的VS项目转换为跨平台项目,使用第三方编译器可能只能针对Android或iOS进行目标设置。

然而,可能可以像XP工具包一样安装Clang作为另一个工具包。因此,也许只是需要有人调整它并使其可用,因为它已经安装好了。

注意: 此答案适用于VS2015更新1之前,该版本没有“带Microsoft CodeGen的Clang”选项。


2
对我而言,在所有的 C++ 项目中都工作良好。 (Win32控制台应用程序和Windows通用应用程序和DirectX 11 应用程序) 有一个“Visual Studio 2015 - Clang with Microsoft CodeGen (v140_clang_c2)”选项。 所以我想现在它是可用的。哦,而且它可以作为常规VS2015安装程序的选项安装。 不需要其他跨平台选项。 - Farway

3
阅读链接的帖子和评论后,我明白这不是VS2015 RC中提供的功能,而是可能在未来的SP版本或下一个VS版本中提供的功能。
正如sjdowling所提到的,在目前(2015年10月,clang 3.7),你可以下载并安装Windows版LLVM。这应该会给你一个LLVM-vs2014平台工具集选项。对我来说,它适用于简单的测试程序,但显然这个“clang-vs”的版本似乎还不支持异常。然而,根据这些注释,这个问题在clang 3.8中应该基本上得到解决。

0

虽然上述解决方案可行,但需要安装clang,而在Visual Studio 2015安装中默认关闭。接受的答案确实展示了如何安装它,但下一页会要求您关闭正在运行新项目的Visual Studio。

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

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

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


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