出力ファイルの定義
注意: Microsoft 社のサポート終了にともない、Visual Studio 2008 以前のバージョンは Incredibuild のサポート対象外となりました。
カスタム ビルド ステップ、ビルド イベント、カスタム ビルド ルールを分散する場合、分散したタスクが生成した出力ファイルを明示的に宣言し、ステップ実行時にこれらのファイルが開始マシンに同期されるようにしなければなりません。
これには 2 通りの方法があります。
出力ファイル フィールド
カスタム ビルド ステップでは [プロパティ] ダイアログの「出力ファイル」フィールドで出力ファイルを宣言します。
出力ファイルの定義ディレクティブ
Visual C++ では、カスタム ビルド ステップ (ファイルレベルとプロジェクトレベルの両方) の出力ファイルは定義できますが、プレビルド / プレリンク / ポストビルド ステップの出力ファイルを定義することはできません。Incredibuild の出力ファイルの定義ディレクティブを使って、Visual Studio のカスタム ビルド ステップ、ビルド イベント、ビルド ルールによって生成される出力ファイルを明示的に宣言することができます。このディレクティブは [ディレクトリの同期を最小限にする] 設定と併用して、ステップによって指定ファイルが変更されることを宣言します。
このモード ([ディレクトリの同期を最小限にする]) では、ビルド ステップでソースファイルが変更された可能性がある場合のみ、ビルド中にソースファイルのタイムスタンプがチェックされます。そのため、ビルド ステップでソースファイルを変更する場合は、それを明示的に宣言することが不可欠です。そうでない場合、ビルドエラーが発生する、古いファイルがビルドに使用される、入力ファイルが変更されたと認識されずビルド ステップがスキップされる、などの問題が発生することがあります。
>出力ファイルの定義ディレクティブの使用方法
-
カスタム / プレビルド / プレリンク / ポストビルド ステップでは、「Rem」に続けてステップのコマンドラインの一部として出力ファイルの定義ディレクティブを入力します。
注意: ファイルやフォルダをパラメーターとして受け取るディレクティブは、絶対パス、相対パス、環境変数を使用できます。
Incredibuild_OutputFile
指定した文字列と一致する出力ファイルを修正または作成するように指示します。1 つのステップで (それぞれ別の行で) 複数使用して、複数の出力ファイルを指定することができます。ディレクティブに続けて出力ファイルのパスと名前を入力します。ワイルドカードが使用できます。コマンドの例:
Rem Incredibuild_OutputFile ..\files\myGenFile1.cppRem Incredibuild_OutputFile $(EnvDefinedFile)Rem Incredibuild_OutputFile c:\out\*.objIncredibuild_OutputFileMask
指定された文字列と一致する出力ファイルをファイル システム上の任意のフォルダで変更または作成するように指示します。1 つのステップで (それぞれ別の行で) 複数使用して、複数の出力ファイル マスクを指定することができます。ディレクティブに続けてファイル名を指定する標準的なワイルドカードを入力します (「任意の場所」を指定します。フォルダのパスは入力しないでください)。コマンドの例:
Rem Incredibuild_OutputFileMask *.outRem Incredibuild_OutputFileMask Res??.txtIncredibuild_OutputDir
1 つのフォルダ内の任意のファイルを変更するように指示します。1 つのステップで (それぞれ別の行で) 複数使用して、複数のフォルダを指定することができます。ディレクティブに続けてフォルダ名を入力します。コマンドの例:
Rem Incredibuild_OutputDir c:\myproj\src\GenFiles\Rem Incredibuild_OutputDir $(EnvDefinedDir)Incredibuild_OutputDirTree
Incredibuild_OutputDir と同じですが、指定したフォルダに加えて、サブフォルダの全ファイルも変更します。
Rem Incredibuild_OutputDirTree ..\src\GenfilesRem Incredibuild_OutputDirTree $(EnvDefinedDir)*このディレクティブは現在「ディレクトリの同期を最小限にする」モードでのみ利用できます。分散タスクの出力ファイルを指定することはできません。
Incredibuild_OutputReset
このディレクティブは [ディレクトリの同期を最小限にする] 設定と併用して、ステップ実行後にソースファイルが変更される可能性があるので、事前にすべてのソースファイルのタイムスタンプを再確認するように通知します。追加のパラメーターなしで使用します。コマンドの例:
Rem Incredibuild_OutputReset