用于 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);

说明:如果您在运行 BuildConsole /command 时遇到此错误:BuildConsole 未识别为内部或外部命令,也未识别为可运行的程序或批处理文件。,您可以选择手动将 Incredibuild 安装文件夹添加到系统路径,也可以在您的机器上重新运行 Incredibuild 安装应用程序,只需确保此选项已选中:将 Incredibuild 文件夹添加到系统路径

命令行选项

选项

功能

备注

/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 将不会被分配给此构建。例如,810

/MinWinVer="<Version>"

指定分配到此构建的远端 Agent 所需的最早操作系统。

具有较旧操作系统的 Agent 将不会被分配给此构建。例如,810

/StopOnErrors

遇见错误后尽快停止构建。

 

/KeepOrigJobsNum=[True/False]

强制 Incredibuild 使用 -j 开关的原始值。

默认情况下,如果原始值高于 200,Incredibuild 会将 -j 开关的值更改为 200。将此选项设置为 True 后, 允许使用更高的 -j 值。

/LogLevel="<Level>"

覆盖该构建的日志记录级别。

<Level> 可以是以下项之一: MinimalBasicIntermediateExtendedDetailed

/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。

如要运行样,请执行以下步骤:

  1. 定义路径中可执行Make/Jom/NMAKE的位置,以允许从任何文件夹启动。

  2. 从命令提示符运行 RunMakeSample.bat/RunJomSample.bat/RunNmakeSample.bat

  3. 配置这些示例是为了使用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 安装文件夹)