五月发布的带Clang3.8 的Clang with Microsoft CodeGen

[原文发表地址]Clang 3.8 in the May release of Clang with Microsoft CodeGen

[原文发表时间] 2016/06/03 Andrew Pardoe[MSFT]

这篇文章是由Dave Bartolomeo, Yuriy Solodkyy, 和 Andrew Pardoe 所写的。

我们刚刚已经发布了第五个Clang/C2工具的更新。 和往常一样,这次的更新也是基于你们的反馈。我们已经听到很多新功能的需求,其中我们听的最多的一个需求就是你们需要Clang3.8 和 x64 宿主机的编译器。 我们很高兴的告诉你们,我们已经将Clang3.8 和x64宿主机的编译器一起放在2016 五月份的发布中。

Clang3.8是最新官方发布的Clang编译器。Clang3.8包含大概六个月的新特性和来自Clang 社区的bug修复。我们还增加了x64宿主机版本的Clang/C2的编译器工具。这让你可以编译那些需要的内存是x86机器无法满足的工程. x64 的Clang/C2 工具会更加兼容那些用x64 MSVC 工具所编译的工程。

这篇博客主要集中讨论继上一个发布的版本之后的一些改变。更多详细关于Clang/C2工具的讨论请阅读“发布具有Microsoft CodeGen功能的Clang编译器(2016年3月)” 以及一些标签关键字为'clang'的博客。

这个新发布的版本中的C2.dll的版本是19.0.25317.0

如何使用x64 宿主机的Clang/C2 编译器

为了让你的Visual Studio工程转而使用x64 宿主工具,你需要设置MSBuild的属性‘PreferredToolArchitecture’为‘x64’。这会让你的工程使用整个x64宿主 C++工具,不管是你使用的Clang/C2 又或者是MSVC编译器。

现阶段无法在Visual Studio中强制使用64位的工具, 因此你不得不编辑更改你的.vcproj 文件。添加下面的一段在<Import …Microsoft .Cpp.Defaults 行的后面:

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup>
    <PreferredToolArchitecture>x64</PreferredToolArchitecture>
  </PropertyGroup>

编辑需要在导入属性文件之后操作,因为依照你的宿主机架构,它可能会在所导入的部分文件中被改变。如果你使用use-v(使能IDE中的详细模式)在你的编译器选项中,你会在输出的时候看到clang.exe 的完整路径——确保它包含了amd64子文件夹。

更多关于这个技术的细节,请参阅Stack Overflow博客How to make Visual Studio use the native amd64 toolchain

如果你使用的编译系统不是MSBuild, 你需要让你的编译系统从‘C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Clang 3.7\bin\amd64\{x86|amd64|arm}\clang.exe’获取clang.exe, 而不是从‘C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Clang 3.7\bin\x86\{x86|amd64|arm}\clang.exe’ 这个路径下。

如何获取这个更新包

通过VS的通知

如果你已经安装了2016年3月份的Clang/C2的跟香港in,你应该会收到一份通知在VS的通知面板,它会告诉你这个更新已经上线可用了。点击那个通知开始安装过程。

c

使用VS 安装程序

  • 定位到 控制面板->程序->程序和性能
  • 右键点击“Microsoft Visual Studio Enterprise 2015”
  • 点击“更改”
  • 点击“修改”
  • 选择“Clang with Microsoft Codegen”. 选择2016年五月份的发布内容。之前的发布内容被标记为”Deprecated”。
  • 请注意:因为最近跟多Visual Studio“15”安装包的更新,这个版本的Clang/C2只能应用在Visual Studio 2015上,而不是下个Visual Studio

创建新的工程

当创建新的工程的时候,你应该能看到两个Clang 工程的选择在Visual C++模板下。选择其中任意一个都会安装或者更新到Clang/C2的最新版本。请注意为了维护一些问提,我们要将描述中的版本号移除。

Bug报告

当提交关于Clang/C2 的bug的时候(例如 他们不再Clang/LLVM上重现),请确保:

  • 请通过https://connect.microsoft.com/VisualStudio提交你的问题
  • 请在bug的标题前加前缀[Clang/C2]
  • 适当的情况下,当你在遇到内部编译器错误的时候,请确保提交所了需包含的预编译源文件和相关的运行脚本。 请在你的生成日志中搜索“PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:”

和往常一样,我们非常期待你能试一试这些更新并且留言给我们反馈,或者发邮件给clangc2@microsoft.com, 又或者通过其他常用的用户渠道: User Voice, Suggestions, Connect (只针对 bugs), 甚至可以通过Send-A-Smile. 我们非常期盼听到你们的声音。