カスタムビルドステップを使ってVC++のソリューションにflexによるソース生成処理を統合する

VC++flexで生成したソースをコンパイルできることがわかったので、flexによるソース生成→ソリューションのビルドを一連の流れで実行できるように、カスタムビルドステップを定義してみた。

まず、仮に"test++.l"というflexの入力ファイルがあるとして、それをソリューションに追加する。

次に、その"test++.l"のプロパティを開き、[カスタムビルドステップ]を以下のように入力。

コマンドラインの内容を解説すると
$(InputName)は入力ファイルの拡張子を除いたファイル名に置き換えられる。
$(InputPath)は入力ファイルの絶対パス名に置き換えられる。

これで、指定ファイルをコンパイルすると、"test++.cc"が生成される。

"test++.cc"をそのままコンパイルすると、

エラー	9	fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?	c:\Users\snaka\Documents\Visual Studio 2008\Projects\flexcom\flexcom\test++.cpp	1593	flexcom

という、わかりにくいエラーが出るので、以下のように「プレコンパイル済みヘッダーを使わない」というように設定しておく。

これで、[ソリューションのビルド]で一気にビルドできるようになる。