2013年1月7日月曜日

[Visual Studio] プリプロセス結果を IDE で見る方法

マクロを使っていると、ちょっとした間違いでよくわからないエラーが出たりしますが、
どこが間違っているか探すのがちょっと大変だったりしますよね。
そういう時にプリプロセッサだけ通したテキストを出力して、マクロがどのように展開されているのか見て探すこともあると思います。

Visual Studio の場合、 cl.exe /P hoge.cpp でプリプロセス済みファイルが出力されますが、
これを IDE から1操作でやろうと思います。

外部ツールを使う
[ツール]メニューにある[外部ツール]を使用します。

[外部ツール]をクリックすると、ダイアログが開きます。
[追加(A)]ボタンを押し、画像のように入力します。
[タイトル]はお好みでつけてください。


[コマンド]のところを入力するまえに、
下記の内容を適当な場所にバッチファイル(.bat)として保存します。
そして、保存したファイルのパスを[コマンド]に入力してください。
@echo off
call "%VS110COMNTOOLS%\vsvars32.bat"

rem プリプロセス
rem 結果は .i 拡張子で出力される
cl.exe /P /C "%~1"

rem 出力ファイルを関連付けられたアプリケーションで開く
rem この辺はお好みで編集してください。
call "%~dp1\%~n1.i"

rem 使い終わったら消す
del /F "%~dp1\%~n1.i"

以上で設定は終わりです。

このバッチファイルが今回の肝になります。
バッチの説明の前に、試しに実行してみましょう。
使用方法
  1. ソースウィンドウでプリプロセス結果を見たいファイルを選択します。
  2. [ツール]-[Preprocess] をクリック(Preprocess は設定で付けたタイトル名)
  3. 選択したソースファイルの .i 拡張子ファイルが開きます。(※)
※ .i 拡張子に関連付けられたアプリケーションで開きます。お使いの Visual Studio に関連付けると IDE で開きます。



解説
仕組みは単純で、cl.exe が出力した .i ファイルを開いているだけです。
そのため .i 拡張子に関連づいたアプリケーションで開きます。

.i 拡張子に Visual Studio を関連付けても良いですし、お気に入りのエディタに関連付けても良いです。
バッチファイルでやることも自由なので、自分好みにバッチファイルを編集してください。

最後に
あまり良い仕組みではないですが、こんなこともできるんだー程度に思っていだければ。




0 件のコメント:

コメントを投稿