用于 Make and Build Tools 的 BuildConsole
/command 开关可启用 BuildConsole 命令行接口的 Make and Build Tools 功能。此功能通过利用空闲 CPU 将要并行执行的构建任务分布到网络上的远端机器,大大缩短了各种构建工具应用程序(如 Make 和 Ant)的构建时间。
每次仅可在单个启动机器上执行一个构建。在构建正在运行时尝试运行另一构建,会导致构建暂停,直至当前构建结束运行。即当前构建结束运行后,新构建才会开始运行。
如要缩短构建时间,请确保启动机器上安装有构建工具,然后运行:
BuildConsole /command="<your original build command line>" [Options]
例如:
BuildConsole /command="make --file=makefile.mak -B"
默认情况下,Incredibuild 自动添加一个并行进程开关(在 Make 中为 -j;在 msbuild 中为 /m:)。
-
如果直接执行 Make,Incredibuild 会将现有 -j 开关值更改为 1024(默认)。如果您想保留 –j 开关值,可添加 /keeporigjobsnum。
-
如果从 Batch 文件执行 Make,即:/command = Batchfile,则 Incredibuild 不会更改 -j 值。
-
如果 <your original build command line> 含有 -j 开关(例如,与 Jom build 一起使用)建议定义一个较高的 -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 and Build Tools 功能,允许以分布方式执行各种构建工具的命令行(例如,Make 和 Ant),无需以任何方式配置 Incredibuild。 |
构建工具必须安装在启动机器上。 |
/usemsbuild |
强制使用 MSBuild |
默认情况下,Incredibuild 会使用 Devenv 执行构建。Incredibuild 可借助此交换机使用 MSBuild。MSBuild 可借助 /msbuildargs 启用添加特定 MSBuild 标志选项,如下所示。 将自动为 VS 2022 及更高版本使用 64 位 MSBuild,为早期 VS 版本使用 32 位 MSBuild。 如需忽略此自动检测并手动指定要使用的版本,请添加 = 32 或 = 64(例如 /usemsbuild=32) |
/msbuildargs="/myarg1 /myarg2" |
使用 BuildConsole 命令 /usemsbuild 开关时,将附加参数传递给 MSBuild。 |
例如: BuildConsole dcom.sln /rebuild /cfg="debug|win32" /msbuildargs="/detailedsummary" /usemsbuild |
@ |
指定含有 BuildConsole /command 命令行的响应文件。 |
当用于运行 BuildConsole /command 的命令行太长,导致无法在脚本中明确指定时,可使用此选项。 |
/SETENV="<name>=<value>" |
为构建运行环境设置或覆盖环境变量。 |
多次使用 /SETENV 以设置/覆盖多个变量。 |
/Log[=filename] |
将构建输出写入文件。 |
如果未能输入文件名,则会在当前目录中创建一个名为 Ib_<target-name>.log 的文件。 |
/Mon[=filename] |
将构建进程(.ib_mon)文件的副本写入指定位置。 |
如果仅提供了文件夹名称,Incredibuild 将会为文件名生成 GUID。一条包含已存 .ib_mon 文件位置的消息将添加到构建输出末尾。 |
/out=filename |
将完整命令行输出重定向到文件。 |
|
/Silent |
不向标准输出写入任何内容。 |
默认行为是写入构建结果,如 Build Monitor's Output 显示器所示。 |
/Attach |
显示当前或最后一个构建的构建输出。 |
如果某一构建当前正在机器上运行,使用此选项将显示截至当前位置的构建输出,并且将继续显示直至构建输出结束。如果未运行任何构建,BuildConsole/command 显示此机器启动的最后一个构建的整个构建输出。 |
/Wait |
如果由此代理启动的另一构建当前正在运行,请等待该构建完成,然后再开始新构建。此亦为默认行为。 |
|
/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> |
指定构建输出文本开头要显示的自定义标头行。此标题也用于 Build History 和 Build Monitor 显示。 |
可用引号将值括入。 |
/QueryLicense |
显示有关有效许可证、已分配程序包和维护到期日的信息。 |
|
/ShowCmd |
针对已构建的每个文件,显示 Incredibuild 用于构建文件的 command-line。 |
|
/ShowAgent |
显示用于构建各个文件的 Agent。 |
|
/ShowTime |
显示所构建的各个文件的 Start 和 Finish 时间。 |
|
/OpenMonitor |
打开用于显示构建进度的 Build Monitor 窗口。 |
|
/MaxCPUS=<n> |
覆盖构建设置中全局最大 CPU/核心数量。 |
|
/AvoidLocal=[On/Off] |
覆盖 Agent Settings 对话框中的 Avoid task execution on local machine when possible 选项。 |
必须设定一个值(ON 或 OFF)。 |
/MaxWinVer="<Version>" |
指定分配到此构建的远端 Agent 所需的最新操作系统。 |
具有较新操作系统的 Agent 将不会被分配给此构建。例如,8 或 10。 |
/MinWinVer="<Version>" |
指定分配到此构建的远端 Agent 所需的最早操作系统。 |
具有较旧操作系统的 Agent 将不会被分配给此构建。例如,8 或 10。 |
/StopOnErrors |
遇见错误后尽快停止构建。 |
|
/KeepOrigJobsNum=[True/False] |
强制 Incredibuild 使用 -j 开关的原始值。 |
默认情况下,如果原始值高于 200,Incredibuild 会将 -j 开关的值更改为 200。将此选项设置为 True 后, 允许使用更高的 -j 值。 |
/LogLevel="<Level>" |
覆盖该构建的日志记录级别。 |
<Level> 可以是以下项之一: Minimal、 Basic、Intermediate、 Extended 或 Detailed。 |
/Help |
显示使用帮助和版本信息。 |
|
/NO_DOTNET_VIRT |
在 Helper 机器上禁用 .NET 环境虚拟化。 |
当在命令行中指定此开关时,它会指示 Incredibuild 不要将 Initiator 机器的 .NET 环境虚拟化到 Helper 机器。添加此交换机是为了解决混合 OS 环境中的 .NET 不兼容问题。 |
/buildcacheremoteserver=[ip address:port] |
使用与 Agent Settings 中定义的构建缓存端点不同的构建缓存端点。还必须指定端口。示例:/buildcacheremoteserver=192.5.8.1:50222 |
|
/buildcachelocal=[ON|OFF] |
覆盖定义是否在此 Initiator 上启用本地 Build Cache 的设置。 |
|
/UseCloudHelpers |
启用 Cloud Helpers 时,此设置可以确定其是否用于协助当前构建。默认情况下,该值为 True。为防止 Cloud Helpers 协助构建,请设置 /UseCloudHelpers=false.。 |
|
/rootTaskAware |
启用后,无论某些任务是否出错,都会将构建状态从构建系统继承到 Incredibuild。如果某些任务出现错误,但构建已成功完成,则构建状态在 Build Monitor 构建监视器中显示为橙色。 |
默认已禁用。设置 /rootTaskAware=1 以启用 |
Return Codes
BuildConsole 可能会返回以下返回代码:
-
0 – 构建成功且没有出现错误
-
1 – 由于与 Incredibuild 无关的错误(例如编译错误),构建失败。
-
2 – 通过用户请求取消构建
-
3 – 由于 Incredibuild 系统错误构建失败
Make、Jom和NMAKE样例
在 Incredibuild 安装下的 Samples\Make And Build Tools 文件夹中,有三个预构建的样例项目,用于演示如何使用 Incredibuild。
如要运行样,请执行以下步骤:
-
定义路径中可执行Make/Jom/NMAKE的位置,以允许从任何文件夹启动。
-
从命令提示符运行 RunMakeSample.bat/RunJomSample.bat/RunNmakeSample.bat。
-
配置这些示例是为了使用MS Visual Studio 2010编译器。
如果您已安装了不同版本的 Visual Studio,请打开 bat 文件并对 call "%VS100COMNTOOLS%vsvars32.bat" 做如下替换:
-
MS Visual Studio 8.0: call "%VS90COMNTOOLS%vsvars32.bat"
-
MS Visual Studio 7.0:call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat(必要时需更改 Visual Studio 安装文件夹)
-