2014年1月22日水曜日

Windows で clang のビルド

Windows でも clang が使えるようにビルドしてみたので、個人用備忘録として残しておきます。
※ 完全に自分用の記事です。自分がした手順をまとめているだけです。
※ この手の情報は検索すればよく出てくるので、そちらを参考にしてもらったほうが良いです。

参照:
clang/LLVMをWindowsでビルドする - 原色奈良阪
LLVM を Windows で使う(clang 編) - 電脳スピーチ blog

準備したもの
MinGW
http://www.mingw.org/ からインストーラーをダウンロードしてセットアップ
※ 筆者環境は Windows 8 のためか、64bit 版の MinGW が必要になった。途中でダメなことに気づき 64bit 版のセットアップをしました。

CMake
cygwin の cmake は MinGW の Generator がなかったので、http://www.cmake.org/ から Windows インストーラーをダウンロードしてパスを通しました。

LLVM/clang
http://llvm.org/ のダウンロードページから LLVM source code と Clang source code をダウンロードし、
任意の場所に展開しました。
Clang は展開した後 clang にリネームして、llvm-3.3.src\tools に移動しました。


ビルド
パスを通す
MinGW のパスを環境変数に設定していないので、コマンドプロンプトを開いた後パスを通しました。
set path=C:\MinGW\bin;%PATH%
cmake
cmake のワーキングディレクトリとして、適当にフォルダを作成します。
今回は、build として作成しました。作成後、build ディレクトリに移動し cmake を実行します。
llvm-3.3.src>mkdir build
llvm-3.3.src>cd build
llvm-3.3.src>cmake -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX=C:\usr\LLVM ..

libiconv-2.dll
cmake を実行したら libiconv-2.dll がないと言われて失敗してしまいました。
検索してもいまいちわからなかったので、msys の bin にあった msys-iconv-2.dll を C:\MinGW\bin にリネームしてコピーしました。
(今思えば コマンドプロンプトからではなく msys でやるべきだったのかも)

make
cmake が完了したら、build ディレクトリで make をします。
ビルドエラー
70% くらい進んだところでビルドエラーが発生
llvm-3.3.src\tools\clang\lib\Basic\FileManager.cpp:317:73: err
or: no matching function for call to 'clang::FileManager::getStatValue(const cha
r*&, _stat64i32&, bool, int)'
   if (getStatValue(InterndDirName, StatBuf, false, 0/*directory lookup*/)) {
検索したところ以下のサイトがヒットしました。
http://comments.gmane.org/gmane.comp.compilers.clang.devel/32242
そこから以下のサイトを参考にしたら解決したとのことなので、私も参考にしました。
https://github.com/KhronosGroup/webcl-validator#building-with-windows-mingw--msys
これによると、64bit 版の MinGW を使えってことのようです。
早速、MinGW 64bit 版をダウンロード、セットアップし、同様にビルドしました。
MinGW 64bit 版のセットアップはこちらを参考にしました。
PENGUINITIS - MinGW 64 bit 版 のセットアップ

ビルド(MinGW 64bit)
MinGW 64bit 版をセットアップし、 cmake からやり直しました。
(make.exe がなかったので mingw32-make.exe をコピー・リネームしました。)

これで無事ビルド完了。

最後に make install をします。
CMAKE_INSTALL_PREFIX で指定したパスにインストールされます。

Visual Studio でビルド
そもそもの目的が libclang 使ったツールを作ることだったので、Visual Studio でビルドしました。

LLVM と clang のソースを取得するとこまでは一緒で、cmake するときの -G オプションを "Visual Studio 10" にします。
cmake が無事に終わると Visual Studio のプロジェクト/ソリューションが出来上がるので、それを Visual Studio で開いてビルドするだけです。

特に問題なくビルドできました。
これで libclang が使えます。

Clang for Windows
先日リリースされた Clang for Windows には libclang が付いているので、libclang が使いたいだけならこれをインストールするだけで OK でした。。。

まぁ、ともあれ。
libclang のことは知らないことだらけなので、これから少しずつやっていこうかと思います。

0 件のコメント:

コメントを投稿