XML 構文の注意点

ここでは XML の妥当性と XML 構文の要素について説明しています。

XML の妥当性

XML ファイルは適切な形式で記載され低なければなりません (Incredibuild のインストール フォルダ下の .xsd ファイルで妥当性を検証できます)。XML ファイル内では特殊文字コードの使用が推奨されています。

< &lt;
> &gt;
" &quot;
' &apos;
& &amp;

XML の要素

  1. Project: 実行するタスク群全体。

  2. Task: 単一のタスク。ファイル検索やレスポンス ファイルを適用すると、XML で定義した単一のタスクが複数のタスクに変換されることがあります。

  3. TaskGroup: タスク グループ。

  4. SourceFile : この属性は、Task 要素に関連付けられ、タスクの入力ソースを定義します。

    1. ファイル検索の定義にはワイルドカードを使用します (例: 単一のタスクで指定したディレクトリ内のすべてのファイルを処理する)。再帰的なファイル検索には未対応です。

    2. レスポンス ファイルを使用して事前に定義したファイルの一覧を読み込みます (詳しくは「レスポンス ファイルの読み込み」をご覧ください)。

  5. InputFiles :Task 要素に関連付けられたこの属性は、タスクのための追加の入力ファイルを定義します。タスクが依存する XML で未定義のファイルを定義するのに使用します (例: コード ビルドのヘッダー ファイル)。

    1. 必須ではありませんが、インクリメンタル ビルドでは推奨されています。

    2. コンマやセミコロンで区切って、複数のファイルを定義できます。

    3. レスポンス ファイルの読み込みにも対応しています。

    4. コマンドの例: <Task SourceFile="main.c" InputFiles="@ResponseFile1.txt; main.h; @ResponseFile2.txt " />

  6. OutputFiles :Task 要素に関連付けられたこの属性は、タスクの出力ファイルを定義します。

    1. 必須ではありませんが、インクリメンタル ビルドでは推奨されています。

    2. コンマやセミコロンで区切って、複数のファイルを定義できます。

    3. レスポンス ファイルの読み込みにも対応しています。

  7. DependsOn :この属性は、TaskTaskGroup に関連付けられ、 依存関係を定義しています。コンマやセミコロンで区切って複数の依存関係を定義することができます (例: DependsOn="task1;task2")。依存関係の詳細はこちらをご覧ください。

  8. Tool :Tool 要素は、タスクを実行するために使用されるツールまたはツールを定義します。ツールの実行ファイルや関連の DLL はリモートマシンには不要です。必要に応じて、同じアプリをツールとして複数回定義できます (サンプルの XML ファイルを参照)。利用可能なアプリには 2 つの制限があります(制限は適宜変更されます)。制限は次の通りです。

    1. アプリの実行中にレジストリの設定を変更することはできません。読み取りのみ許可されています。

    2. アプリの実行中に UI での操作はできません。

  9. Params :ToolTask 要素に関連付けられたこの属性は、タスクのためのコマンドライン入力を定義します。新規パラメーターとツールから継承したパラメーターを組み合わせてタスクに渡すことができます (「inherited:params」マクロを参照) 。

  10. WorkingDir :WorkingDir 属性は、Project,TaskGroup,およびTask 要素に現れ、タスクに使用する作業ディレクトリを定義します。XML 定義の最も深層にある実現値は、親定義をローカルに上書きします。たとえば、デモXMLでは、アプリケーションに渡されるファイル名にフルパスが含まれていませんが、 Project 要素で WorkingDir が定義されているため、アプリケーションはファイルを取得できます。

  11. OutputPrefix/GroupPrefix :Tool 要素に関連付けられたこれらの属性は、ビルドモニタとログに表示されるテキストを定義します。

  12. SkipIfProjectFailed :この属性は、ToolTask 要素と関連付けられ、障害が発生した場合の動作を定義します。例えば、コンパイルタスクが失敗した場合にリンクタスクをスキップします。

  13. SuccessExitCodes :ツール 要素に関連付けられたこの属性は、ツールから返されるデフォルトの 0 成功終了コードを変更可能にします。範囲指定も可能です (例:「2...19」)。

  14. WarningExitCodes: 指定したツールの警告終了コードを指定します。この終了コードを返したタスクは「ビルドモニター プログレス」ページで黄色いバーで表示され、「サマリー」ページで警告としてカウントされます。コンマで区切って数値を入力します。範囲指定も可能です (例:「2...19」)。

  15. OutputFileMasks :Tool 要素に関連付けられたこの属性は、ビルダーに返されるべきファイルタイプのセットを定義することができます。 例えば、アプリケーションはビルダーが必要としない中間ファイルを使用します。ネットワーク上で不要なファイルが同期されないように、必要なファイルを絞り込むファイル マスクを定義できます。複数のマスクを定義できます (例: *.o,*.d )。

  16. VCCompiler :Trueに設定すると(デフォルトはFalse)、このツールとそのサブプロセスは、PDBとPCHの取り扱いに関して、Visual Studio C/C++コンパイラと同じように処理されるようになります。Incredibuild インターフェイスを使って Visual Studio C/C++ コンパイラの実行を分散したい場合に使用します。

  17. AutoReserveMemory: ツールがファイルのメモリ マッピングを利用するように指定します。通常、プリコンパイル済みヘッダーをサポートするためにコンパイラによって使用されます。メモリ マッピングで使用するファイルの拡張子 (通常はプリコンパイル済みヘッダー ファイルの拡張子) を指定する必要があります。例えば、「gcc」というツールで「.gch」という拡張子を持つプリコンパイル済みヘッダーを作成する際に、メモリ マッピングを使用したい場合は、プロファイル XML で gcc を次のように定義します。

            <Tool name="compiler" path="c:\cygwin\bin\gcc.exe" AllowRemote="true" AutoReserveMemory="*.gch"/> (コンマで区切って複数の拡張子を指定できます (例: *.gch,*.pch "))。

  18. SingleInstancePerAgent:「True」に設定されたツールは (Agent がマルチプロセッサやマルチコアでも) 単一の Agent 上で同時に実行されることはありません。異なる Agent 上ではツールを同時に実行できます。

  19. AllowRestartOnLocal:「True」に設定されたツールでは、タスクを開始する Agent は Agent Settings の [Restart remote processes on local machine when possible] で有効に設定できるパフォーマンスの最適化をビルドに適用できます。重要: ツールのローカル インスタンスの終了時に「中途半端な」出力が残る可能性があるため、出力ファイルに増分を書き込むツールでは「True」に設定しないでください。