BuildConsole (Make & Build ツール)
/command オプションを使って BuildConsole コマンドライン インターフェイスの Make & Build ツール機能を有効すると、ビルド タスクをネットワーク上のリモートマシンのアイドル CPU に分散して、各種ビルド ツール アプリ (make や Ant など) のビルド時間を大幅に短縮できるようになります。
1 台の開始マシンで一度に実行できるビルドは 1 つだけです。ほかのビルドが実行中に開始したビルドは一時停止され、現在のビルドが終了するのを待って実行されます。
ビルド ツールが開始マシンにインストールされていることを確認してから、次のコマンドを実行します。
BuildConsole /command="<your original build command line>" [Options]
コマンドの例:
BuildConsole /command="make --file=makefile.mak -B"
デフォルトでは自動的に「parallel processes」スイッが追加されます (make では「-j」、msbuild では「/m」)。
-
Make を直接実行した場合、Incredibuild は既存の-j スイッチの値を1024 (既定値) に変更します。-jスイッチの値を維持したい場合は、/keeporigjobsnum を追加してください。
-
make がバッチ ファイルから実行された場合 (「/command = Batchfile」)、-j 値は変更されません。
-
<your original build command line>に -j オプションが含まれている場合 (例: Jom のビルド)、-j 値は最大コア数を下回らないように設定します。
Incredibuild が変更するオプションは次の通りです。
-
FMakeTool2MultiJobsKey.Add('make', '-j', '--jobs', True);
-
FMakeTool2MultiJobsKey.Add('jam', '-j', '-j', True);
-
FMakeTool2MultiJobsKey.Add('bjam', '-j', '-j', True);
-
FMakeTool2MultiJobsKey.Add('jamplus', '-j', '-j', True);
-
FMakeTool2MultiJobsKey.Add('gmake', '-j', '-j', True);
-
FMakeTool2MultiJobsKey.Add('jom', '/j', '/j', True);
-
FMakeTool2MultiJobsKey.Add('msbuild', '/m:', '/m:', False);
-
FMakeTool2MultiJobsKey.Add('scons', '-j', '-j', True);
-
FMakeTool2MultiJobsKey.Add('waf', '-j', '-j', True);
コマンドライン オプション
オプション |
機能 |
備考 |
---|---|---|
/command |
BuildConsole の Make & Build ツール機能を有効にします。Incredibuild を設定することなく、各種ビルド ツール (make や Ant など) のコマンドラインを分散して実行できるようになります。 |
ビルド ツールが開始マシンにインストールされていなければなりません。 |
/usemsbuild |
MSBuild を強制的に使用します。 |
デフォルトでは Devenv でビルドが行われます。このオプションを使うと、MSBuild でビルドが実行され、/msbuildargs を使って特定の MSBuild フラグを追加できるようになります。 これにより、VS 2022以降では64bit MSBuildが、それ以前のバージョンでは32bit MSBuildが自動的に使用されます。 この自動検出を無視し、使用するバージョンを手動で指定するには、=32 または =64 を追加します(例:/usemsbuild=32)。 |
/msbuildargs="/myarg1 /myarg2" |
「/usemsbuild」オプション (後述) を使用する際に追加の引数を渡します。 |
コマンドの例: BuildConsole dcom.sln /rebuild /cfg="debug|win32" /msbuildargs="/detailedsummary" /usemsbuild |
@ |
BuildConsole /command のコマンドラインが含まれる応答ファイルを指定します。 |
BuildConsole /command を実行するためのコマンドラインが長すぎて、スクリプトで明示的に指定できない場合に使用します。 |
/SETENV="<name>=<value>" |
ビルドのコンテキストに合わせて環境変数を設定または上書きします。 |
複数の変数を設定/上書きしたい場合は /SETENV を複数回使用します。 |
/Log[=filename] |
ビルド出力をファイルに書き込みます。 |
filename を指定しない場合は「IB_<target-name>.log」という名前のファイルがカレント ディレクトリに作成されます。 |
/Mon[=filename] |
ビルド進行 (.ib_mon) ファイルのコピーを指定された場所に書き込みます。 |
フォルダ名のみ指定した場合は該当ファイル名の GUID が生成されます。.ib_mon ファイルの保存場所がビルド出力の最後に追加されます。 |
/out=filename |
コマンドラインの全出力をファイルにリダイレクトします。 |
|
/Silent |
標準出力に何も書き込みません。 |
デフォルトではビルドモニターの出力ディスプレイの通りにビルド結果を書き込みます。 |
/Attach |
現在または直近のビルドの出力を表示します。 |
ビルド中の場合は、現時点までのビルドの出力を表示し、ビルドが終了するまで表示し続けます。ビルドが実行されていない場合、BuildConsole/command は、このマシンから開始された最後のビルドに対する全ビルド出力を表示します。 |
/wait |
この Agent が開始した別のビルドが実行中の場合、終了を待って新しいビルドを開始します。これはデフォルトの動作です。 |
|
/NoWait |
この Agent が開始した別のビルドが BuildConsole/command を実行中の場合、「Another build already running」というメッセージを表示して終了します。 |
|
/NoLogo |
ビルド出力の Incredibuild ヘッダーを非表示にします。 |
|
/Beep |
ビルドの完了を通知音で知らせます。 |
|
/Stop |
ローカルマシンで実行中のビルドを停止します。 |
ビルドが停止すると BuildConsole /command はコード「3」を返します。/stop が使用され、現在ビルドが実行されていない場合、コード2 が返されます。 |
/Enable |
Incredibuild Agent を有効にします。 |
|
/Disable |
Incredibuild Agent を無効にします。 |
|
/Reset |
Agent のファイルのキャッシュを消去します。 |
|
/Title=<build title> |
ビルド出力をテキスト表示する際にテキストの先頭に表示するカスタム ヘッダーを設定します。ここで設定した文字列がビルド履歴とビルドモニターにも表示されます。 |
値を引用符 (”) で囲みます。 |
/QueryLicense |
有効なライセンス、Allocate Package、メンテナンスの有効期限などの情報を表示します。 |
|
/ShowCmd |
Incredibuild がビルドで使用したコマンドラインを出力ファイルに表示します。 |
|
/ShowAgent |
ビルドで使用した Agent を出力ファイルに表示します。 |
|
/ShowTime |
ビルドの開始時刻と終了時刻を出力ファイルに表示します。 |
|
/OpenMonitor |
プロセスの進行状況を表示するビルドモニター画面を開きます。 |
|
/MaxCPUS=<n> |
ビルド設定の最大 CPU / コア数を上書きします。 |
|
/AvoidLocal=[On/Off] |
[Agent Settings] の [Avoid task execution on local machine when possible] の設定を上書きします。 |
値 (ON / OFF) が必須です。 |
/MaxWinVer="<Version>" |
ビルドに参加できるリモート Agent の OS (最新のバージョン) を指定します。 |
これより新しい OS を搭載した Agent はビルドに参加できません。例:8 あるいは10。 |
/MinWinVer="<Version>" |
ビルドに参加できるリモート Agent の OS (最古のバージョン) を指定します。 |
これより古い OS を搭載した Agent はビルドに参加できません。例:8 あるいは10。 |
/StopOnErrors |
エラーが発生したら直ちにビルドを停止します。 |
|
/KeepOrigJobsNum=[True/False] |
オリジナルの -j 値を強制的に使用します。 |
デフォルトではオリジナルの値が「200」以上の場合、-j 値は「200」に修正されます。「True」に設定すると大きな -j 値を指定できるようになります。 |
/LogLevel="<Level>" |
このビルドのログレベルを上書きします。 |
<Level> は、Minimal、Basic、Intermediate、Extended、またはDetailed、のいずれかになります。 |
/Help |
使い方のヘルプやバージョン情報を表示します。 |
|
/NO_DOTNET_VIRT |
Helper マシン上の .NET 環境の仮想化を無効にします。 |
このオプションを指定すると、Initiator マシンの .NET 環境を Helper マシンに仮想化しません。様々な OS が混在する環境で .NET の互換性がない場合に使用します。 |
/buildcacheremoteserver=[ip address:port] |
エージェント設定で定義したものとは異なるBuild Cache エンドポイントを使用します。また、ポートも指定する必要があります。例:/buildcacheremoteserver=192.5.8.1:50222 |
|
/buildcachelocal=[ON|OFF] |
この イニシエータ でローカル Build Cache が有効かどうかを定義する設定を上書きします。 |
|
/UseCloudHelpers |
クラウドHelperが有効な場合、この設定は、現在のビルドにおけるアシストに使用されるかどうかを決定します。デフォルトでは、trueが設定されています。クラウドHelperがビルドを支援しないようにするには、/UseCloudHelpers=falseを設定します。 |
|
/rootTaskAware |
有効にすると、タスクにエラーがあるかどうかにかかわらず、Build Systemから Incredibuild にビルドステータスを継承します。いくつかのタスクでエラーが発生したもの、ビルドが正常に完了した場合、Build Monitorのビルド ステータスはオレンジ色になります。 |
デフォルトでは無効化しています。有効化するために、/rootTaskAware=1に設定ます。 |
リターンコード
BuildConsole は次のリターンコードを返します。
-
0 - エラーなしでビルドに成功しました
-
1 - Incredibuild に関係のないエラー(コンパイルエラーなど)のため、ビルドに失敗しました
-
2 -ユーザーからのリクエストでBuildがキャンセルされました
-
3 - IncredibuildのシステムエラーによりBuildが失敗しました
サンプル プロジェクト
Incredibuild を使ったビルドを理解するためのプレビルド サンプル プロジェクトが 3 つ用意されています (Incredibuild インストール フォルダの Samples > Make And Build Tools フォルダ)。
サンプルの実行手順
-
任意のフォルダから処理を開始できるように、make / jom / nmake の実行ファイルの場所をパスで定義します。
-
コマンドプロンプトから次のいずれかのコマンドを実行します RunMakeSample.bat (RunJomSample.bat / RunNmakeSample.bat)。
-
サンプルでは Visual Studio 2010 コンパイラが設定されています。
ほかの VS バージョンを使用する場合は .bat ファイルを開いて「call "%VS100COMNTOOLS%vsvars32.bat"」を次の値に置き換えます。
-
VS 8.0 の場合: call "%VS90COMNTOOLS%vsvars32.bat"
-
VS 7.0 の場合: call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat (ご利用の環境に応じて VS のインストール フォルダを変更します)。
-