BuildConsole (Visual Studio)

ここでは「BuildConsole.exe」(Incredibuild のインストール フォルダに格納) を使ってコマンドラインから Visual Studio のビルドを分散実行する方法をみていきます。

Incredibuild Interfaces 拡張パッケージのインターフェースの1つを使用する分散ジョブは、IBConsole.exe コマンドラインインターフェースを使用して実行することができます。レンダリング、シミュレーション、QAテスト、スクリプトなど、カスタムツールを高速化するためのインターフェースです。

BuildConsole.exe の実行

BuildConsole <Target> [Options]

<Target> には、Visual Studio ソリューション (.sln ファイル) またはプロジェクト (.vcproj/.icproj/.vcxproj ファイル) へのパスを指定します。

特定のプロジェクトをビルドするために、必ずしもBuildConsoleコマンドに .sln ファイルをインクルードする必要はありませんが、.sln パラメーターの省略は推奨されていません。プロジェクト ファイルの情報が一部欠けている場合、プロジェクトを正しくコンパイルできないことがあります。BuildConsole コマンドに「/VsVersion」オプションが追加されました。これによりビルドで使用する Visual Studio のバージョンを指定できるようになりました。

コマンドの例:

  • MySln.sln ソリューションの Debug|Win32 のソリューション構成をリビルドする場合:

    BuildConsole.exe MySln.sln /rebuild /cfg="Debug|Win32"

  • MySln.sln ソリューションのDebug|Win64 ソリューション構成を再構築するには

    BuildConsole.exe MySln.sln /rebuild /cfg="Debug|Win64"

  • MySln.sln ソリューションのProj1プロジェクトのみを Debug|Win32Release|Win32 両方のソリューョン構成でビルドするには

    BuildConsole.exe MySln.sln /build /prj=Proj1 /cfg="Debug|Win32,Release|Win32"

  • プロジェクトと構成のより複雑な組み合わせをビルドするには、[Batch Buid] ダイアログから「MyPreset」プリセットを使用します。

    BuildConsole.exe MySln.sln /build /preset="MyPreset"

このほかに、BuildConsole はプロジェクトをビルドするための「msdev.exe」と「devenv.exe」コマンドラインの構文もサポートしています。「msdev.exe」または「devenv.ex」を起動するバッチ ファイルをすでに使用している場合は、これらのプログラム名を「BuildConsole.exe」に置き換えると、標準の Visual C++ ビルドの代わりに Incredibuild の分散ビルドが実行されます。

1 台の開始マシンで一度に実行できるビルドは 1 つだけです。ほかのビルドが実行中に開始したビルドは一時停止され、現在のビルドが終了するのを待って実行されます。

BuildConsoleは、内部および外部のコマンド、作業可能なプログラムもしくはバッチファイルとして認識されていませんというエラーが表示される場合、 Incredibuild インストールフォルダを手動でシステムパスに追加するか、マシンで Incredibuild セットアップアプリケーションを再実行して、システムパスに Incredibuildフォルダを追加する オプションが選択されているか確認します。

コマンドライン オプション

オプション 機能 備考

@

BuildConsole のコマンドラインが含まれる応答ファイルを指定します。

BuildConsole を実行するためのコマンドラインが長すぎて、スクリプトで明示的に指定できない場合に使用します。

/All

一部プロジェクトのビルドに失敗しても、ソリューション / ワークスペースのビルドを続行します。

デフォルトでは、プロジェクトで出力ファイルのビルドに失敗するとビルドを停止しますが、このオプションを使って残りのビルドを継続することができます。

/Attach

現在または直近のビルドの出力を表示します。

ビルド中の場合は、現時点までのビルドの出力を表示し、ビルドが終了するまで表示し続けます。ビルドを実行していない場合は、当該マシンで開始した最後のビルドの出力をすべて表示します。

/AvoidLocal=[On/Off]

エージェント設定のAvoid task execution on local machine when possible オプションを上書きします。

値 (ON / OFF) が必須です。

/Beep

ビルドの完了を通知音で知らせます。

 

/BrowseInfo=[ON/OFF]

現在の設定にかかわらず、ブラウザ情報を作成または作成解除します。

ブラウズ情報の設定については、Agent Settings を参照してください。

/buildcacheremoteserver=[ip address:port]

エージェント設定で定義したものとは異なるBuild Cache エンドポイントを使用します。また、ポートも指定する必要があります。例:/buildcacheremoteserver=192.5.8.1:50222

 

/buildcachelocal=[ON|OFF]

この イニシエータ でローカル Build Cache が有効かどうかを定義する設定を上書きします。

 

/Cfg=<configuration>

ビルドするソリューション構成を指定します(VC6 ビルドの場合はプロジェクト構成を指定します)。

  • 値を引用符 (”) で囲みます。

  • コンマで区切って複数の構成を指定できます。

  • 値は大文字と小文字を区別しません。

/cl_add="<options>"

cl.exe のすべての呼び出しに、追加のコンパイラーオプションを追加できるようにしました。

cl.exe のコマンドラインに表示されるように、1 つまたは複数のコマンドをスペースで区切って入力します。

例:BuildConsole MyProj /cl_add="/O2 /FA"

/cl_rem="<options>"

cl.exe のすべての呼び出しから除外するコンパイラ オプションを指定します。

cl.exe のコマンドラインに表示されるように、1 つまたは複数のコマンドをスペースで区切って入力します

例: BuildConsole MyProj /cl_rem="/Z7 /Zd /Zi /ZI"

/Clean

プロジェクトとすべての依存関係の中間ファイルと出力ファイルを消去します。

 

/compile=<source file name>

指定したファイルのみビルドします。

  • 値を引用符 (”) で囲みます。

  • コンマで区切って複数のソース ファイルを指定できます。

/Disable

Incredibuild Agent を無効にします。

/DisablePdbForwarding

このビルドの PDB 転送メカニズムを無効にします。

VS 2010 のみが対象です。

/DumpSourceFiles=filename

プロジェクト / ソリューションの全ソース ファイルのパスをファイルに書き込みます。

<output filename> は必須です。

/Enable

Incredibuild Agent を有効にします。

/Help

使い方のヘルプやバージョン情報を表示します。

/link_add="<options>"

link.exe のすべての呼び出しにリンカ オプションを追加します。

cl.exe のコマンドラインに表示されるように、1 つまたは複数のコマンドをスペースで区切って入力します。

例: BuildConsole MyProj /link_add="/map:MyProj.map"

/Log[=filename]

ビルド出力をファイルに書き込みます。

filename を指定しない場合は「IB_<target-name>.log」という名前のファイルがカレント ディレクトリに作成されます。

/LogLevel="<Level>"

このビルドのログレベルを上書きします。

<Level> は、以下のいずれかになります。MinimalBasicIntermediateExtendedDetailed.

/MaxCPUS=<n>

ビルド設定の最大 CPU / コア数を上書きします。

/MaxWinVer="<Version>"

ビルドに参加できるリモート Agent の OS (最新のバージョン) を指定します。

これより新しい OS を搭載した Agent はビルドに参加できません。設定可能な値は8.110です。

/MinWinVer="<Version>"

ビルドに参加できるリモート Agent の OS (最古のバージョン) を指定します。

これより古い OS を搭載した Agent はビルドに参加できません。利用可能な値は8.110です。

/Mon[=filename]

ビルド進行 (.ib_mon) ファイルのコピーを指定された場所に書き込みます。

  • フォルダ名のみ指定した場合は該当ファイル名の GUID が生成されます。

  • .ib_mon ファイルの保存場所がビルド出力の最後に追加されます。

/msbuildargs="/myarg1 /myarg2"

BuildConsole /command /usemsbuild スイッチを使用する場合、MSBuild に追加の引数を渡します。

コマンドの例:

BuildConsole dcom.sln /rebuild /cfg="debug|win32" /msbuildargs="/detailedsummary" /usemsbuild

/NO_DOTNET_VIRT

Helper マシン上の .NET 環境の仮想化を無効にします。

このオプションを指定すると、Initiator マシンの .NET 環境を Helper マシンに仮想化しません。様々な OS が混在する環境で .NET の互換性がない場合に使用します。

/NoLogo

ビルド出力の「Incredibuild」ヘッダーを非表示にします。

/NoRecurse

指定したプロジェクト構成のみビルドしてサブプロジェクトを無視します。

  • /Clean と併用すると指定した構成のみクリーンアップできます。

  • Rebuild と併用すると指定した構成のみリビルドできます。

/NoWait

この Agent が開始した別のビルドが実行中の場合、BuildConsole は「Another build already running」のメッセージを表示して終了します。

/OpenMonitor

プロセスの進行状況を表示するビルドモニター画面を開きます。

/out=filename

コマンドラインの全出力をファイルにリダイレクトします。

/pemode

Agentの投機的実行 の設定を上書きします。

/pemode=0は投機的実行を無効にします。

/pemode=2 は投機的実行を完全に有効にします。

/Preset

Batch Build ダイアログ で事前に保存したプリセットを使用してビルドするプロジェクト/コンフィグを決定します。

  • プロジェクトと構成の組み合わせが複雑な場合に有効です。

  • /Preset コマンドオプションは、/cfg/prj の両方のオプションを変換します。

/Prj=<project name>

ビルドするプロジェクトを決定します。

  • 値を引用符 (”) で囲むことができます。

  • /prj」オプションのない .sln ファイルで BuildConsole を実行すると、指定したソリューション構成上でコマンドが実行されます。

  • ワイルドカード(「*」と「?」) を使って複数のプロジェクトを指定することができます。

  • コンマで区切って複数のソース ファイルを指定できます。この場合、すべてのプロジェクトを同じ構成でビルドします。

  • 例えば、ソリューション/ワークスペース内のすべての構成をビルドする場合は次のコマンドを入力します。BuildConsole MyWksp /prj="*"

/QueryLicense

有効なライセンス、Allocate Package、メンテナンスの有効期限などの情報を表示します。

/Rebuild

プロジェクトをビルドする前にクリーンを行います。

複数の変数を設定/上書きしたい場合は /SETENV を複数回使用します。

/Reset

Agent のファイルのキャッシュを消去します。

/SETENV="<name>=<value>"

ビルドのコンテキストに合わせて環境変数を設定または上書きします。

/ShowAgent

ビルドで使用した Agent を出力ファイルに表示します。

/ShowCmd

Incredibuild がビルドで使用したコマンドラインを出力ファイルに表示します。

/ShowTime

ビルドの開始時刻と終了時刻を出力ファイルに表示します。

/Silent

標準出力に何も書き込みません。

デフォルトではビルドモニターの出力ディスプレイの通りにビルド結果を書き込みます。

/Stop[=<build-id>] ローカルマシンで実行中のビルドを停止します。複数のビルドを実行している場合は <build-id> を指定します。 ビルドが停止すると IBConsole はコード「3」を返します。ビルドが実行されていない場合はコード「2」を返します。
/StopOnErrors 有効にするとエラーが発生した時点でビルドを停止します。

/StopAll

実行中のビルドをすべて停止します。

 

/Title=<build title>

ビルド出力をテキスト表示する際にテキストの先頭に表示するカスタム ヘッダーを設定します。ここで設定した文字列がビルド履歴とビルドモニターにも表示されます。

値を引用符 (”) で囲みます。

/UseCloudHelpers

クラウドHelperが有効な場合、この設定は、現在のビルドにおけるアシストに使用されるかどうかを決定します。デフォルトでは、trueが設定されています。クラウドHelperがビルドを支援しないようにするには、/UseCloudHelpers=falseを設定します。

 

/UseEnv

Visual C++ IDE のパスの代わりに、PATH、INCLUDE、LIBPATH、LIB 環境変数を使用します。

  • このオプションをグローバルに設定するには、[Agent Settings] ダイアログで [Visual Studio Builds] > [Advanced] に移動して [Use environment variables instead of IDE paths] のチェックボックスをオンにします。

  • devenv.exe の「/useenv」オプションを使ってインスタンス化された Visual Studio IDE ウィンドウからビルドを開始した場合は常に「/useenv」が使用されます。

/UseIDEMonitor

このオプションを指定して Visual Studio IDE から を BuildConsole を実行すると、IDE のビルドモニターに処理の進行況が表示されます。

/UseMSBuild

MSBuild を強制的に使用します。

デフォルトでは Devenv でビルドが行われます。このオプションを使うと、MSBuild でビルドが実行され、/msbuildargs を使って特定の MSBuild フラグを追加できるようになります。

これにより、VS 2022以降では64bit MSBuildが、それ以前のバージョンでは32bit MSBuildが自動的に使用されます。

この自動検出を無視し、使用するバージョンを手動で指定するには、=32 または =64 を追加します(例:/usemsbuild=32)。

/VsVersion="<Version>"

指定バージョンの Visual Studio ツールセットを強制的に使用します。

<Version>には以下のいずれかを指定します。

  • vc10 (VS2010 用)

  • vc11 (VS2012 用)

  • vc12 (VS2013 用)

  • vc14 (VS2015 用)

  • vc15 (VS2017用)

  • vc16 (VS2019 用)

  • vc17 (VS2022 用)

/wait

この Agent が開始した別のビルドが実行中の場合、終了を待って新しいビルドを開始します。これはデフォルトの動作です。

/EnableOlderMSVCSupport=True

MSVC 2012-2015でBuild Cacheを有効化するには、このフラグを「True」に設定します。

このフラグはデフォルトでは「フォールス」です。

リターンコード

BuildConsole は次のリターンコードを返します。

  • 0 - エラーなしでビルドに成功しました

  • 1 - Incredibuild に関係のないエラー(コンパイルエラーなど)のため、ビルドに失敗しました

  • 2 -ユーザーからのリクエストでBuildがキャンセルされました

  • 3 - IncredibuildのシステムエラーによりBuildが失敗しました