先日、Clang 3.4がリリースされました。
このClang 3.4には様々な新機能が追加されましたが、その一つにVisual StudioのC/C++コンパイラドライバ(cl.exe)を、clangに置き換えるコンパイラドライバ(clang-cl.exe)が正式リリースされたことが挙げらます。そのリリース文は次の通りです。
clang-cl provides a new driver mode that is designed for compatibility with Visual Studio’s compiler, cl.exe.
このclang-cl.exeは、オプションがcl.exe互換となっているコンパイラドライバです。つまり、ビルド時にcl.exeをclang-cl.exeに置き換えることで、Visual C++のコードをclangを利用してビルドできるようになります。
しかも、clang for windowsでは、cl.exeとclang-cl.exeの切り替えがプロジェクトのプロパティで切り替えできるよう、Visual Studio向けの設定ファイルも同梱されてます。これは、Windowsアプリ開発者の方は一度試してみる価値があるのでは?
ということで、その手順は以下の通り。
あらかじめVisual Studio 2010以降がインストールされているものとします(Express版もOK)。私はVisual Studio 2013 Express for Windows Desktop、Windows7 Ultimate(64bit)で検証しました。
インストール方法
まず、LLVMのダウンロードページからClang for Windowsをダウンロードします。
次にダウンロードしたClang for Windowsをインストールします。先ほどダウンロードしたClang for Windowsをダブルクリックします。すると、おなじみのインストーラーが起動します。いろいろ尋ねられますが、すべてデフォルト設定でインストールしました。
次にClang for WindowsをVisual Studioから呼びだすための設定ファイルをインストールします。
まず、コマンドプロンプトを管理者モードで起動します。install.batファイルを実行します。
cd C:\Program Files (x86)\LLVM\tools\msbuild > install.bat
すると、インストールされているVisual Studioのバージョンに合わせて設定ファイルがインストールされます(詳しくはinstall.batファイルを参考に)
これで設定終了です。
プロジェクトの設定を変更する
あとは、プロジェクトのプロパティで、コンパイラをclang-cl.exeへ切り替えます。
Visual C++のプロジェクトのプロパティを開いたあと、「構成プロパティ」-> 「全般」 -> 「プラットフォーム ツールセット」を選択します。ここで"LLVM-○○"を選択します。これで設定終了です(おそらく既存プロジェクトも同様に変更可能のはず)
ビルドすると、次のようなログが出力されます。このログでは、clang-cl.exeを利用してビルドされていることが分かります。
1>------ ビルド開始: プロジェクト:ConsoleApplication2, 構成:Debug Win32 ------ 1>clang-cl.exe : warning : argument unused during compilation: '/ZI' 1>clang-cl.exe : warning : argument unused during compilation: '/Gm' (中略) 1>clang-cl.exe : warning : argument unused during compilation: '/FdDebugvc120.pdb' 1>clang-cl.exe : warning : argument unused during compilation: '/Gd' 1> ConsoleApplication2.vcxproj -> c:usersnrkzdocumentsvisual studio 2013ProjectsConsoleApplication2DebugConsoleApplication2.exe ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========