Windows用の公式LLVM 4.0ビルド は、Visual Studio 2015までのVisual Studioと統合します。残念ながら、Visual Studio 2017はまだサポートされていません。
プロジェクトのPlatform ToolsetをLLVM-vs2014
に設定しようとすると、エラーがポップアップ表示されます。
それを機能させる方法を知っていますか?
更新
2018年、LLVM 6.0はVisual Studio 2017(バージョン15.X.X)との統合を正式にサポートしていません。VisualStudio 2015(バージョン14.X.X)ツールセットとの統合のみをサポートしています。
最後に、素晴らしいGitHubリポジトリを見つけ、必要なMSBuildプラットフォームツールセットとを統合しましたLLVM clang 5.0.0をVisual Studio 2017に。 READMEファイルの指示に従うと、2つの新しいプラットフォームツールセット_LLVM-vs2017
_と_LLVM-vs2017_xp
_ができます。問題は解決しました。
更新
forkを作成しました。これはLLVM 6.0.0用に更新され、LLVM /のインクルードパスとライブラリパスを提供することで、より良い統合を提供しますクラン。
Royi のおかげで、元の_.prop
_ファイルはLLVM 5.0用に明示的に調整されているため、追加に失敗しました適切なlib
($(LLVMInstallDir)\lib
)およびinclude
($(LLVMInstallDir)\lib\clang\6.0.0\include
)フォルダー。
C++ v140ツールセットでのみ出荷されるいくつかのmsbuildターゲットが必要であり、VS 2017はデフォルトでv141ツールセットのみをインストールします。 VS 2017インストーラーを開いて、v140ツールセットのチェックボックスを見つけてインストールすると、適切なC++ msbuildターゲットが利用可能になり、動作します。
LLVMプロジェクトは https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain を介してVisual Studio 2017を明示的にサポートするようになりました
LLVM Clang 7.0をVisual Studio 2017 update 15.5.6と統合する方法を理解しました。最新のLLVMビルドを使用したPDBベースのデバッグを完全にサポートするv1913。
つまり、lld-link/DEBUG:GHASH; clang-clへのclang-cl -mllvm -emit-codeview-ghash-sectionフラグ。
これは3つのステップのプロセスです。
Visual Studio 2017アップデート15.4.5以降、Microsoftの「実験的」Clang C2は機能しなくなりました。したがって、clangを使用して、完全なPDB(CodeView/Z7だけでなく)デバッグ機能を備えたコードをコンパイルするには、上記の修正が必要です。これはまた、clangコンパイラのフロントエンドからLLVM codegenバックエンドおよびLLVMリンカーまでのすべてのLLVMコンポーネントを使用してウィンドウのビルドとPDBデバッグを行えるため、クロスプラットフォームビルドの移植性テストのより完全なスイートになります。
乾杯、デビッド
LLVM/Clangには、VS2017で使用できるように更新されたパッチがあります。ただし、VS2017はまだ直接サポートされていません。私は、LLVM開発者のメーリングリストで、VS2017のサポートを更新するように依頼しました。彼らが私が言ったことを聞くなら。
2018年1月9日をチェックしてください http://planet.clang.org/
「試してみよう!」を見てください。セクション:
すでにclang-clとlld-linkを使用している場合今日のWindowsでは、これを試すことができます。これを有効にするために必要な2つのフラグがあります。1つはコンパイラ用で、もう1つはリンカー用です。。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オプションを追加するときにclanglld(akalld-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
に変更します
pps、私はネイティブのWindows-10-ARMアプリ(UWP modern-com-junkではない)を構築するためにMicrosofts ARMおよびARM64コンパイラも有効にしています。しかし、まだ十分な掘り出しを行っていません。 clangソースを介して[〜#〜] arm [〜#〜]-m32
および-m64
がIntelcode-genに対して行うこと.
次の記事を参照してください。