的official LLVM 4.0 build for Windows與Visual Studio集成了多達到Visual Studio 2015年。不幸的是仍然不支持的Visual Studio 2017LLVM在Visual Studio 4.0鐺2017年
當您嘗試設置項目的平臺工具集到LLVM-vs2014
,它彈出一個錯誤。
你知道任何方式使它工作嗎?
的official LLVM 4.0 build for Windows與Visual Studio集成了多達到Visual Studio 2015年。不幸的是仍然不支持的Visual Studio 2017LLVM在Visual Studio 4.0鐺2017年
當您嘗試設置項目的平臺工具集到LLVM-vs2014
,它彈出一個錯誤。
你知道任何方式使它工作嗎?
它需要一些僅與C++ v140工具集一起提供的msbuild目標,而VS 2017僅默認安裝v141工具集。如果你打開VS 2017安裝程序,找到v140工具集的複選框並安裝,那麼正確的C++ msbuild目標將可用,並且這個東西將工作。
LLVM/Clang現在有一個更新的補丁,允許您將它與VS2017一起使用。但他們仍然不直接支持VS2017。我在LLVM開發者郵件列表上詢問他們更新他們對VS2017的支持,希望他們能夠做到。如果他們聽我說的話。
可否請您指點我的補丁? – batbrat
我已經想出瞭如何將LLVM Clang 7.0與Visual Studio 2017更新15.5.6集成。 v1913完全支持使用最新LLVM構建的基於PDB的調試。
即,lld-link/DEBUG:GHASH; clang-cl -mllvm -emit-codeview -ghash-section標誌到clang-cl。
這是一個三步過程。
從Visual Studio 2017更新15.4.5開始,微軟的「實驗性」Clang C2不再適用。因此,使用clang編譯具有完整PDB(不僅限於CodeView/Z7限制)可調試性的代碼時,上述修復是必需的。由於您可以使用從clang編譯器前端到LLVM代碼生成器後端和LLVM鏈接器的所有LLVM組件進行構建和PDB調試,因此這也成爲用於跨平臺構建的可移植性測試的更完整套件。
歡呼聲,大衛
退房2018年1月9日http://planet.clang.org/
查看 「試試吧!」部分:
如果你已經在使用鐺-CL今天的Windows上LLD-鏈接,你可以嘗試了這一點。有兩個標誌需要啓用它,一個用於編譯器,另一個用於連接器: 要啓用編譯器發佈.debug $ H部分,您需要將無證的
-mllvm -emit-codeview-ghash-section
標誌傳遞給clang- cl(這個標誌在未來應該會消失,一旦這被認爲是穩定的並且足夠好以便默認打開)。 要告訴lld-link要使用此信息,您需要將/DEBUG:GHASH
傳遞給lld。
你只需要通過-mllvm -emit-codeview-ghash-section
旗幟或者您的C++項目「命令行:附加選項」區域中,或者直接將其置於您在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
創造了「toolset.props」文件。
的關鍵是,在添加這些CLI選擇你告訴鐺發出調試信息的LLD(又名LLD-鏈接)會理解和運用,產生完全填充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
PPS,我也有啓用微軟ARM和ARM64編譯器,用於構建本地Windows-10-ARM應用程序(而不是UWP現代通訊垃圾)。但是,到目前爲止,我還沒有通過鐺做了足夠的挖掘來源正確配置ARM類似於-m32
和-m64
爲英特爾代碼生成做一些事情。
請參閱以下文章:
很好的回答。另一方面,它將是LLVM支持v141工具集的時候。 – plasmacel
是的,如果不需要v140,它們可以很好的支持v141 :-) – keith
他們也可以改變LLVM-vs2014的名字! – keith