【问题标题】:How to compile C++ for Windows with clang in Visual Studio 2015如何在 Visual Studio 2015 中使用 clang 为 Windows 编译 C++
【发布时间】:2015-09-29 19:53:25
【问题描述】:

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

那么您能否向我解释一下,如何将使用的编译器更改为 c++ 项目中的叮当声(在 VS2015 RC 社区版中)。

【问题讨论】:

  • 您的意思是来自this page,其中包含在 Visual Studio 中使用 clang 的说明?
  • @sjdowling:我可能错了,但我不这么认为。从我链接的文章(和其他文章)中,我得到的印象是,应该有一个版本的 clang 直接与 VS 一起发布。此外,文章中的作者提到,他们将使用 clang 作为前端,但仍然使用 VC++ 作为 Windows 的后端代码生成器。您链接 sem 以使用 llvm 作为后端的版本。而且它似乎还不支持VS2015。

标签: c++ visual-studio visual-studio-2015 clang++


【解决方案1】:

据我了解,Clang 和 GCC 都附带适用于 Visual Studio 2015 的 Android 和 iOS 跨平台 SDK/工具。

据我所见,它只允许我在拥有其中一个跨平台项目时选择那些。

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

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

虽然不知道如何将普通的 VS 项目转变为跨平台,而且您可能只能使用 3rd 方编译器开箱即用地针对 Android 或 iOS。

不过,可以像 XP 工具包一样将 Clang 作为另一个工具包安装。所以也许这只是有人摆弄它并在它已经安装时提供它的问题。

警告:此答案是 VS2015 之前的更新 1,没有“Clang with Microsoft CodeGen”选项。

【讨论】:

  • 对我来说,它在我所有的 C++ 项目中都能正常工作。 (Win32 Console Application & Windows Universal & DirectX 11 App)有一个“Visual Studio 2015 - Clang with Microsoft CodeGen (v140_clang_c2)”选项。所以我想它现在可用。哦,它可以作为普通 VS2015 安装程序的一个选项安装。不需要其他跨平台选项。
【解决方案2】:

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

正如 sjdowling 所提到的,您目前(2015 年 10 月,clang 3.7)可以做的最接近的事情是下载并安装 llvm for windows。这应该为您提供 LLVM-vs2014 平台工具集选项。对我来说,它适用于简单的测试程序,但显然这个版本的“clang-vs”似乎还不支持异常。但是,根据these notes 的说法,这个问题应该主要在clang 3.8 中解决。

【讨论】:

    【解决方案3】:

    从 VS2015 Update 1 开始,您可以通过 New Project 窗口安装“Clang with Microsoft CodeGen”模板,浏览至 Installed -> Templates -> Visual C++ -> Cross Platform。

    然后,您将能够在任何 Windows C++ 项目的属性页面中选择带有 Microsoft CodeGen v140_clang_3_7 Platform Toolset 的 Clang 3.7。

    Clang 有一组完全不同的可识别的命令行选项,因此在使用 v140_clang_3_7 工具集时,项目属性必须使用与 Clang 兼容的选项,可以识别为以 - 开头而不是/。例如,Debug Information Format 属性设置为“Full Debug Information (DWARF2) (-g2 -gdwarf-2)”,Enable C++ Exceptions 属性设置为“Yes (-fexceptions)”。

    this blog post有更多信息。

    【讨论】:

    • @MikeMB Update 1 RTM 于 2015 年 10 月 30 日昨天发布。go.microsoft.com/fwlink/?LinkId=691129
    • 尝试在没有任何更改的情况下构建“动态库 - 使用 Microsoft CodeGen 的 Clang 3.7”会给我一个 LNK1104 (msdn.microsoft.com/query/…) 错误。有人经历过吗?
    • 由于某种原因我的 VS2015 更新 RC 没有这个模板??
    • @paulm 更新 RC?更新 2 已经是 RTM。在安装过程中选择自定义安装,并确保 Clang with Microsoft CodeGen 已启用。
    【解决方案4】:

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

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

    1. 控制面板->程序->程序和功能。
    2. 右键单击“Microsoft Visual Studio Enterprise 2015”(或 “微软视觉
    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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      相关资源
      最近更新 更多