Der offizielle LLVM 4.0-Build für Windows ist in Visual Studio bis Visual Studio 2015 integriert. Leider wird Visual Studio 2017 immer noch nicht unterstützt.
Wenn Sie versuchen, Platform Toolset eines Projekts auf LLVM-vs2014
zu setzen, wird ein Fehler angezeigt.
Wissen Sie, wie es funktioniert?
Update
LLVM 6.0 unterstützt 2018 offiziell noch keine Integration mit Visual Studio 2017 (Version 15.X.X), nur mit dem Toolset Visual Studio 2015 (Version 14.X.X).
Schließlich fand ich ein BRILLANTES GITHUB-REPO mit den erforderlichen MSBuild-Plattform-Toolsets, die LLVM-Clang 5.0.0 in Visual Studio 2017 integrieren. Nachdem Sie den Anweisungen der Datei README gefolgt sind, werden Sie zwei neue Plattform-Toolsets LLVM-vs2017
und LLVM-vs2017_xp
haben. Problem gelöst.
Update
Ich habe ein FORK erstellt, das für LLVM 6.0.0 aktualisiert wurde und eine bessere Integration bietet, indem Include- und Bibliothekspfade für LLVM/clang bereitgestellt werden.
Vielen Dank an Royi , der erkannt hat, dass die .prop
-Originaldateien explizit für LLVM 5.0 angepasst wurden, und das Hinzufügen der richtigen Ordner lib
(
$(LLVMInstallDir)\lib
) und include
($(LLVMInstallDir)\lib\clang\6.0.0\include
) fehlt.
Es sind einige msbuild-Ziele erforderlich, die nur mit dem C++ v140-Toolset geliefert werden, und VS 2017 installiert standardmäßig nur das v141-Toolset. Wenn Sie das VS 2017-Installationsprogramm öffnen, das Kontrollkästchen für das v140-Toolset auswählen und installieren, werden die richtigen C++ - msbuild-Ziele verfügbar sein, und das Ding wird funktionieren.
Das LLVM-Projekt unterstützt Visual Studio 2017 jetzt explizit über https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain
Ich habe herausgefunden, wie man LLVM Clang 7.0 mit Visual Studio 2017 Update 15.5.6 integriert. V1913 mit voller Unterstützung für PDB-basiertes Debugging unter Verwendung der neuesten LLVM-Builds.
lld-link/DEBUG: GHASH; clang-cl -mllvm -emit-codeview-ghash-section-Flag zu clang-cl.
Es ist ein dreistufiger Prozess.
Ab Visual Studio 2017 Update 15.4.5 funktioniert das "experimentelle" Clang C2 von Microsoft nicht mehr. Daher sind die oben genannten Korrekturen erforderlich, um mit Clang Code zu kompilieren, der eine vollständige Fehlerbehebung für PDB (nicht nur für CodeView/Z7 Limited) aufweist. Dies wird jetzt auch zu einer umfassenderen Suite für plattformübergreifende Portabilitätstests, da Sie mit allen LLVM-Komponenten vom Clang-Compiler-Frontend bis zum LLVM-Codegen-Backend und dem LLVM-Linker Debugging für Windows erstellen und PDB-Debugging durchführen können.
Prost, David
LLVM/Clang hat jetzt einen aktualisierten Patch, mit dem Sie ihn mit VS2017 verwenden können. Sie unterstützen VS2017 jedoch nicht direkt. Ich habe auf der LLVM-Entwickler-Mailingliste gefragt, ob sie ihre Unterstützung für VS2017 aktualisieren möchten. Hoffentlich tun sie das. Wenn sie zuhören, was ich gesagt habe.
Check out 09. Januar 2018 http://planet.clang.org/
Schauen Sie sich das "Probieren Sie es aus!" Sektion:
Wenn Sie heute unter Windows clang-cl und lld-link verwenden, können Sie dies ausprobieren. Um dies zu ermöglichen, sind zwei Flags erforderlich, eines für den Compiler und eines für den Linker: Um die Ausgabe eines .debug $ H - Abschnitts durch den Compiler zu ermöglichen, müssen Sie das undokumentierte
-mllvm -emit-codeview-ghash-section
-Flag an clang-cl übergeben (dieses Flag sollte in der Zukunft verschwinden, sobald dies berücksichtigt ist.) stabil und gut genug, um standardmäßig aktiviert zu sein) . Um lld-link anzuweisen, diese Informationen zu verwenden, müssen Sie den/DEBUG:GHASH
an lld übergeben.
Sie müssen lediglich die -mllvm -emit-codeview-ghash-section
-Flags entweder in Ihrem Bereich c ++ - Projekte "Befehlszeile: Weitere Optionen" übergeben oder direkt in der Datei "toolset.props" ablegen, die Sie in C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\LLVM-vs2017
oder C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\LLVM-vs2017
erstellt haben. .
Der Schlüssel ist, dass Sie beim Hinzufügen dieser cli -Optionen clang dazu bringen, Debug-Informationen auszugeben, die von lld (aka lld-link) verstanden und zur vollständigen Produktion verwendet werden aufgefüllte PDB -Dateien. Nicht die limitiert -Einsätze, die vor den Abstürzen von LLVM 7.0 am 9. Januar 2018 gemacht wurden.
toolset.targets: (beliebige Version)
<Project ToolsVersion="14.1"
xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
<Import Project="$(VCTargetsPath)\Microsoft.CppCommon.targets" />
</Project>
toolset.props: (Win32-Version)
<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>
Ändern Sie für x64 -m32
in -m64
.
p.p.s., habe ich auch Microsofts ARM - und ARM64-Compiler zum Erstellen nativer Windows-10-ARM-Apps (nicht UWP modern-com-junk) aktiviert. Aber ich habe noch nicht genug durch die clang - Quellen gesucht, um etwas Ähnliches für ARM richtig zu konfigurieren, was -m32
und -m64
für Intel code-gen tun.
Siehe diese Artikel: