1

独自のグラフィカル エディターを使用して DSL を開発しています。このようなファイルの拡張子は .own です。.own ファイルを .h ファイルにコンパイルする小さなツールもあります。

X.own --> Xh および X/*.h

生成を開始するための単純な .rules ファイルを作成しました。

私の問題は次のとおりです。ほとんどのソース ファイルには Xh が含まれていますが、X.own を変更しても、生成される Xh (またはその他の生成ファイル) が異なるわけではありません。これは、ジェネレーターが一時ファイルとファイル比較を使用して処理します。しかし、Visual Studio はこれらすべてを処理する方法を認識していないようです。「出力ファイル」プロパティを適切なファイルに設定すると、常に変更されると想定されます。そうしないと、ビルドプロセスが生成されないと仮定してビルドプロセスが生成されます。

どうすれば物事を正しくすることができますか?

1) カスタムビルドツールを起動

2) 依存関係に基づいてビルド プロセスを計算する

4

2 に答える 2

1

カスタムビルドツールオプションを使用せず、代わりにソリューションのビルド前イベントとして設定します(これは、カスタムビルドツールと同様に、一般的なコマンドラインを使用できます)。このように、MSVSは生成されたファイルを調べません。ソリューションエクスプローラーに#includeまたはリストされている限り、.hファイルの生成は他のコンパイルの前に行われるため、正常にコンパイルする必要があります。

カスタムビルドツールは、ファイルが生成または変更されることを期待する方法のため、一般的にビルド前およびビルド後のイベントほど有用ではないことがわかりました。このツールは、将来的に他のことに役立つ可能性があります(たとえば、ビルド後に.exeを圧縮したり、他の依存関係を正しく生成したり、ファイルが適切に配置されていることを確認したりするなど)。

ここに、ソリューションのプロパティでこれらのオプションがどこにあるかを示す優れた図があります

于 2009-02-09T15:57:28.383 に答える
0

jherikoの答えは興味深いものです。カスタムツールを起動し、ビルドの依存関係を生成する方法を提供するからです。ただし、「カスタムビルドツール」ツールキットを使用する可能性がすべて失われるため、あまり使用できません。

  • 常に正確な拡張子を持つファイルをコンパイルすることを選択します
  • 特定のプロジェクト構成内の特定のファイルのカスタムビルドを手動でスキップします(そしてこの決定を視覚化します)

「すべてを持っている」方法はありません(または少なくとも私は何も見つけていません)。私が見つけた唯一の方法は、ファイルが更新されたときにカスタムビルドツールがゼロ以外の数値を返すようにすることです。ユーザーには、エラーではないことを説明し、ビルドを再度起動するように勧めます。次回、カスタムビルドツールが再度起動されますが(最適ではありませんが、使用するツールはかなり高速です)、新しいファイルは変更されず、有効な依存関係を使用してビルドプロセスが続行されます。

注:上記のアプローチは、プロジェクトのビルド順序を無視しているように見えるIncredibuildでは機能しません。

于 2009-04-03T12:14:59.343 に答える