wake-up-neo.com

Integrieren Sie LLVM Clang 4.x.x/5.x.x/6.x.x in Visual Studio 2017

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).

7
plasmacel

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. 

7
plasmacel

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.

10
keith

Das LLVM-Projekt unterstützt Visual Studio 2017 jetzt explizit über https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain

2
thakis

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.

  1. Installieren Sie das neueste llvm
  2. Aktualisieren Sie die toolset.props, toolset.targets in VS, um den neuesten Clang zu unterstützen
  3. Wählen Sie das neue Toolset aus, das zum Erstellen Ihres C/C++ - oder eines anderen lang-Projekts verwendet werden soll

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

1
smallscript

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. 

1
Osman Zakir

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:

0
smallscript