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

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

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

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

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

  10. WorkingDir: Project、TaskGroup、Task要素で発生するWorkingDir属性は、タスクに使われる作業ディレクトリを定義します。XML定義の最も詳細な定義は、局所的に親定義を上書きします。例えば、デモのXMLでは、アプリケーションに渡されたファイル名にはフルパスが含まれていなませんが、Project要素でWorkingDirが定義されているため、アプリケーションはそのファイルを拾うことが可能です。

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

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

  13. SuccessExitCodes :Tool要素に関連するこの属性は、ツールから返されるデフォルトの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」に設定しないでください。