カスタムオブジェクトリレーショナルマッピングシステムを使用するC++プロジェクトがあります。このシステムでは、テーブルは.tblファイルによって定義されます。次に、これらは、それぞれに対して.hファイルと.cppファイルを作成するコードジェネレーターを介して実行されます。
Visual Studio 2008および2010で、このためにカスタムビルドルールを機能させようとしています。
これは私が今のところ持っているものです:
<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="z_dbbld"
Version="8.00"
>
<Rules>
<CustomBuildRule
Name="z_dbbld"
DisplayName="z_dbbld"
CommandLine="$(SolutionDir)\tools\z_dbbld $(InputName)"
Outputs="$(InputName).cpp"
FileExtensions="*.tbl"
ExecutionDescription="z_dbbld $(InputName)"
>
<Properties>
</Properties>
</CustomBuildRule>
</Rules>
</VisualStudioToolFile>
問題は依存関係です。クリーンチェックアウトでビルドを実行すると、ファイルが存在しないため、このルールによって生成された.hファイルに対して「インクルードファイルを開くことができません」というエラーが発生します。
出力を「$(InputName).h」に変更しようとしましたが、それでもエラーが発生します。
これで、コードジェネレーターの実行時にこれらのファイルが作成されます。すべてのファイルが最初のパスで作成されたため、再度コンパイルしてもエラーは発生しません。ただし、クリーンで自動化された、フレッシュチェックアウトからのビルドは機能しません。
何か案は?