official LLVM 4.0 build for Windows与Visual Studio集成到Visual Studio 2015.不幸的是它仍然不支持Visual Studio 2017。
当您尝试将项目的平台工具集设置为LLVM-vs2014
时,会弹出错误。
你知道有什么方法让它起作用吗?
更新
2018年,LLVM 6.0官方仍然不支持与Visual Studio 2017(版本15.X.X)集成,仅支持Visual Studio 2015(版本14.X.X)工具集。
答案 0 :(得分:10)
它需要一些仅与C ++ v140工具集一起提供的msbuild目标,而VS 2017默认只安装v141工具集。如果您打开VS 2017安装程序,找到v140工具集的复选框并安装它,那么正确的C ++ msbuild目标将可用,并且该东西将起作用。
答案 1 :(得分:7)
最后,我找到了一个 brilliant GitHub repo ,其中包含将LLVM clang 5.0.0集成到Visual Studio 2017中所需的MSBuild平台工具集。按照自述文件的说明操作后,您将拥有两个新的平台工具集import matplotlib.animation as animation
from matplotlib import colors
import matplotlib.pyplot as plt
import numpy as np
N=20
steps = 100
interval_pause = 100
repeat_pause = 1000
cmap = colors.ListedColormap(['white', 'black'])
bounds=[-1,0,1]
norm = colors.BoundaryNorm(bounds, cmap.N)
fig = plt.figure()
ax = plt.gca()
ax.axes.xaxis.set_ticklabels([])
ax.axes.yaxis.set_ticklabels([])
ax.axes.xaxis.set_ticks([])
ax.axes.yaxis.set_ticks([])
#plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=[-1,0,1])
array = 2*(np.random.rand(N,N,steps)-0.5)
state = np.zeros(steps)
ims = []
##leg = ax.legend(loc='upper left',prop={'size':12})
for step in range(0,steps):
state = array[:,:,step]
im = plt.imshow(state,interpolation='nearest',cmap=cmap,norm=norm, animated=True)
##lab = 'step = '+str(step)
##leg.texts.set_text(lab)
ims.append([im])##+leg])
ani = animation.ArtistAnimation(fig,ims,interval=interval_pause,repeat_delay=repeat_pause)
#ani.save('animate_evolution '+str(timer())+'.mp4')
plt.show()
和LLVM-vs2017
。问题解决了。
<强>更新强>
我为LLVM 6.0.0更新了 fork ,并通过提供LLVM / clang的包含和库路径提供了更好的集成。
感谢Royi,他们意识到原始的LLVM-vs2017_xp
文件是为LLVM 5.0明确定制的,并且错过了添加正确的.prop
(lib
)和{{1 }(
$(LLVMInstallDir)\lib
)个文件夹。
答案 2 :(得分:4)
LLVM项目现在通过https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain
显式支持Visual Studio 2017。答案 3 :(得分:2)
我是LLVM技术的新手,并且正在使用Visual Studio扩展程序Clang Power Tools。他们有一个设置页面,您可以在其中安装LLVM(所有版本> = 4.0)。之后,您可以使用VS工具栏上的扩展按钮,随意进行clang编译或整齐的代码现代化(这是我最欣赏的)。这样,您无需进行任何配置。
更新
打开扩展设置,然后从顶部选择LLVM页面。在“ LLVM”页面上,您将看到所有受支持的LLVM版本以及每个版本右侧的“安装”按钮。安装您需要的任何版本。在页面底部的下拉列表允许您选择要安装多个版本时要使用的版本。
中逐步介绍了此功能答案 4 :(得分:1)
LLVM / Clang现在有一个更新的补丁,允许您将其与VS2017一起使用。但他们仍然没有直接支持VS2017。我在LLVM开发人员邮件列表上询问他们是否更新了他们对VS2017的支持,所以希望他们能够做到这一点。如果他们听我说的话。
答案 5 :(得分:1)
我已经想出如何将LLVM Clang 7.0与Visual Studio 2017更新15.5.6集成。 v1913完全支持使用最新LLVM构建的基于PDB的调试。
即lld-link / DEBUG:GHASH; clang-cl -mllvm -emit-codeview-ghash-section flag to clang-cl。
这是一个三步过程。
从Visual Studio 2017更新15.4.5开始,Microsoft“实验性”Clang C2不再有效。因此,上述修复是必要的,以使用clang来编译具有完整PDB(不仅仅是CodeView / Z7限制)可调试性的代码。现在,这也成为了一个更完整的可移植性测试跨平台构建套件,因为您可以使用从clang编译器前端到LLVM codegen后端和LLVM链接器的所有LLVM组件为Windows构建和PDB调试。
干杯,大卫
答案 6 :(得分:0)
查看2018年1月9日http://planet.clang.org/
看看“试一试!”部分:
如果您今天已在Windows上使用 clang-cl 和 lld-link ,则可以尝试此操作。启用此功能需要两个标志,一个用于编译器,另一个用于链接器: 要使编译器能够发出 .debug $ H 部分,您需要将未记录的
-mllvm -emit-codeview-ghash-section
标志传递给 clang-cl (此标志应该一旦这被认为是稳定的并且足以在默认情况下打开,那么将来就会消失。 要告诉 lld-link 使用此信息,您需要将/DEBUG:GHASH
传递给lld。
您只需要在 c ++项目“命令行:其他选项”区域中传递-mllvm -emit-codeview-ghash-section
标记,或者将它们直接放在您的“toolset.props”文件中在C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\LLVM-vs2017
或。{
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\LLVM-vs2017
。
关键是,在添加 cli 选项时,您要告诉 clang 发出 lld (又名的调试信息lld-link )将理解并用于生成完全填充的 PDB 文件。不是2018年1月9日LLVM 7.0下降之前的有限。
toolset.targets :(任何版本)
<Project ToolsVersion="14.1"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(VCTargetsPath)\Microsoft.CppCommon.targets" />
</Project>
toolset.props :( Win32版本)
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Microsoft.Cpp.$(Platform).v141.props" Condition="Exists('$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Microsoft.Cpp.$(Platform).v141.props')"/>
<Import Project="$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Toolset.props" Condition="Exists('$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Toolset.props')"/>
<PropertyGroup>
<LLVMInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\LLVM\LLVM)</LLVMInstallDir>
<LLVMInstallDir Condition="'$(LLVMInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LLVM\LLVM)</LLVMInstallDir>
<ExecutablePath>$(LLVMInstallDir)\msbuild-bin;$(ExecutablePath)</ExecutablePath>
<LibraryPath>$(LLVMInstallDir)\lib\clang\7.0\lib\windows;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<!-- remove the implicit vcxxx.pdb path to avoid rebuilds every time as clang-cl only supports /Z7 -->
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<!-- Set the value of _MSC_VER to claim for compatibility -->
<AdditionalOptions>-m32 -fmsc-version=1913 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
</Project>
对于x64,将-m32
更改为-m64
p.p.s。,我还启用了Microsofts ARM和ARM64编译器,用于构建原生的Windows-10-ARM应用程序(不是UWP现代com-junk)。但是,到目前为止,我还没有做足够的挖掘 clang 来源来为 ARM 正确配置类似-m32
和-m64
做的事情英特尔代码。
参见这些文章: