※Visual Studioのコンパイラとしてclangを使いたい人向けではありません。
先行文献:LLVMに実行可能コードの生成をまかせたいの方が詳しく書かれていますが、ハマったところも含めて書きます。
実験環境
- Win7, Visual Studio 2017インストール済み
- Visual Studio 2017でC++をコンパイルしたことがある
- cygwinがインストールされている
-
まずllvmのソースを入手します。素直にアーカイブを入手した方が良いかもしれません。
$ git clone https://github.com/llvm-mirror/llvm.git
-
CMakeをインストールします。
cygwin向けには3.5までしか存在しないようで、これはVisual Studio 2017に対応していないので、Windows用バイナリCMake3.8.2をインストールしました。
-
bin/cmake-gui.exeを実行します。
-
configureでVisual Studio 15 2017 Win64を選択します。
-
下の空欄にhost=x64と入力します。
-
そのまま進んだところ、大量のエラーが出ました。
-
LLVM+ClangをVisual C++でビルドしてみた。を参考に、
LLVM_DEFAULT_TARGET_TRIPLE
をx86_64-pc-windows-msvc19
に変更します。 -
cygwinのPythonでは
/cygdrive/d/……/LLVMBuild.txt does not exist
と怒られてしまう__ため、stackoverflowの当該質問を参考に、Windows用Python2.7をインストールします__。 -
Getting Started with the LLVM System using Microsoft Visual Studioを(今更)見てみるとGnuWin32 toolsが必要らしいのでインストールします。
-
その後パスをいじったりと悪戦苦闘しましたが、__環境変数Pathの中で、Windows用Python2.7.exeをcygwinのそれより手前に置いて、CMake-guiを一旦閉じてから再び実行__し、今までの手順をやり直すとうまくいきました。
-
最後にGenerateを押すとVisual Studio向けのファイルが作成されます。
-
Open Projectを押すとVisual Studioが起動するので、普通にビルドします。とても時間がかかります。
cygwinのパスが通っていると、CMakeがcygwinのPythonを選んでしまい、/cygdrive/d/……
などのパスを生成し、そんなディレクトリはないと怒られてしまうようです。環境変数Pathからcygwinを消したり、LIT_COMMANDを手で書き換えたり悪戦苦闘したのですが、__CMake-guiをいったん閉じて再び実行する__ことが重要だったようで、そうしたら自動で正しい方のWindows用Pythonを選んでくれました。
確認環境
- Win10, Visual Studio 2017インストール済み
- Visual Studio 2017でC++をコンパイルしたことがある
- Bash on Windowsがインストールされている
以下の方法でうまくいきました。GnuWin32 toolsは必要ないのか……?
- ソースコードを入手。
- CMake3.8.2をzipでダウンロード。(BoWのaptから持ってこれるCMakeは3.5と古いので)
- Python2.7.13をインストール。
- CMake-guiを実行、Visual Studio 15 2017 Win64を選択、host=x64と入力。
-
LLVM_DEFAULT_TARGET_TRIPLE
をx86_64-pc-windows-msvc19
に変更。 - Generateを押してファイルを作成。
- Open ProjectからVisual Studioを起動してビルド。