2013年11月5日火曜日

ClangOnWin を使ってみた

clang を Windows でも簡単に使いたいと思い、ビルド済みのものを探していたら
ClangOnWin」というものを見つけたので試してみました。

インストール
ClangOnWin のページからインストーラーがダウンロードできますので、
そちらを取得したらインストーラーを起動します。(※ この記事では LLVM-3.4.svn-win32-2013.11.01-193854.exe を使用しました)


起動したら特に変更なくデフォルト設定のままインストールをします。

ツールセット
インストールが完了すると Visual Studio のプラットフォームツールセットに LLVM が追加されます。


これを LLVM-vs2013(2010,2012) にすることで clang でのビルドができます。

ビルドしてみる
早速ビルドしてみると大量に警告がでます。

Visual Studio のコンパイラオプションがないため警告が出ているだけなので、
気にすることはないですが、うるさいのでプロジェクトの修正をしました。(メンドクサイ…)

コンパイルオプションの警告を取り除きましたが、まだ警告が・・・

今回試しにビルドしているプロジェクトでは _s 系の関数は使わず pragma で警告を抑止しているため上記のような警告が出てしまった。
今後も _s に書き換える方針はないので、今回も警告を抑止した。(pragma は使えないので _CRT_SECURE_NO_WARNINGS を define しました)
実際、この辺みんなどうしているのだろうか?

ビルドエラー
LLVM-vs2013 でビルドしたのですが、 type_traits でエラーが出てしまいました。


LLVM-vs2012 でもエラーが…


error: cannot mangle RTTI descriptors for type 'codecvt' yet
ちょっとお手上げです…
もうしばらく弄ってはみるので、何かわかったらここで報告します。
(解決策も募集!)

追記 11/5
もう少し調べてみたら ClangOnWin のファイルリストのページに説明が書いてありました。
それによると、RTTI は使えないようです。また、-D_HAS_EXCEPTIONS=0 も必要なようです。
RTTI を無効にするには、「プロジェクト」 - 「プロパティ」からプロパティダイアログを開き、「C/C++」 - 「言語」 - 「ランタイム型情報を有効にする」 を 「いいえ(/GR-)」 に設定します。

これで、ビルドが通るかと思ったのですが、まだダメでした。。。残念
error : cannot mangle the name of type 'basic_streambuf' into RTTI descriptors yet


0 件のコメント:

コメントを投稿