用于 Visual Studio 的 BuildConsole
BuildConsole.exe 位于 Incredibuild 安装文件夹,是一个 console 应用程序,您可以利用它从命令行运行分布式 Visual Studio 构建。
使用 IBConsole.exe 命令行界面即可运行分布式作业,该作业使用了 Incredibuild Interfaces 扩展包的其中一个界面。该界面可用于加速您的自定义工具,例如渲染、模拟、单元测试、QA 测试和脚本。
要运行 BuildConsole.exe,需要运行:
BuildConsole <Target> [可选]
其中 <Target> 可以是转到 Visual Studio 解决方案 (.sln file) 或项目 (.vcproj/.icproj/.vcxproj file) 的路径
在构建特定项目时,BuildConsole 命令不会强制您将 .sln 文件作为构建命令的一部分。但不建议省略 .sln 参数。项目文件中可能缺少某些 Incredibuild 用以正确编译项目的信息。在 Incredibuild 的 BuildConsole 命令中添加了一个 /VsVersion 标志,便于您指定 Incredibuild 用以构建项目的 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"
-
如需针对 Debug|Win32 和 Release|Win32 解决方案配置,在 MySln.sln 解决方案中仅构建 Proj1 项目:
BuildConsole.exe MySln.sln /build /prj=Proj1 /cfg="Debug|Win32,Release|Win32"
-
如需构建更复杂的项目与配置组合,请使用之前保存在 Batch Build 对话框中的 MyPreset 预设:
BuildConsole.exe MySln.sln /build /preset="MyPreset"
除此语法之外,BuildConsole 还支持 msdev.exe 和 devenv.exe 命令行语法,用于构建项目。如果您已在使用那些用于生成 msdev.exe 或 devenv.exe 的批处理文件,请将标准 MSVC 构建替换为 Incredibuild 分布式构建,方法是编辑您的文件并将这些程序名称替换为 BuildConsole.exe。
每次仅可在单个启动机器上执行一个构建。在构建正在运行时尝试运行另一构建,会导致构建暂停,直至当前构建结束运行。即当前构建结束运行后,新构建才会开始运行。
如果您在遇到此错误:BuildConsole 未识别为内部或外部命令,也未识别为可运行的程序或批处理文件。您可以选择手动将 Incredibuild 安装文件夹添加到系统路径,也可以在您的机器上重新运行 Incredibuild 安装应用程序,只需确保此选项已选中:将 Incredibuild 文件夹添加到系统路径。
命令行选项
选项 | 功能 | 备注 |
---|---|---|
@ |
指定一个包含 BuildConsole 命令行的响应文件。 |
当用于运行 BuildConsole 的命令行太长,以致无法在脚本中对其进行明确指定时,请使用此选项。 |
/All |
用于继续进行解决方案/工作区构建,即便特定项目构建失败。 |
默认情况下,当项目无法构建其输出文件时,Incredibuild 会停止相关构建。使用此选项,Incredibuild 将会继续构建剩余项目配置,即便先前项目未能构建。 |
/Attach |
显示当前或上次构建的构建输出。 |
如果某一构建当前正在机器上运行,使用此选项将显示截至当前位置的构建输出,并且将继续显示直至构建输出结束。如果当前没有正在运行的构建,BuildConsole 将会显示最后一次在此机器上启动的构建的全部输出。 |
/AvoidLocal=[On/Off] |
覆盖 Agent Settings 中的 Avoid task execution on local machine when possible 选项。 |
必须设定一个值(ON 或 OFF)。 |
/Beep |
在完成构建时播放声音。 |
|
/BrowseInfo=[ON/OFF] |
无论当前具有何种信息浏览设置,均强制创建或禁止创建浏览信息。 |
如需了解有关信息浏览设置的更多信息,请参阅 Agent Settings。 |
/buildcacheremoteserver=[ip address:port] |
使用与 Agent Settings 中定义的构建缓存端点不同的构建缓存端点。还必须指定端口。示例:/buildcacheremoteserver=192.5.8.1:50222 |
|
/buildcachelocal=[ON|OFF] |
覆盖定义是否在此 Initiator 上启用本地 Build Cache 的设置。 |
|
/Cfg=<configuration> |
确定所需构建的解决方案配置。(在 VC6 构建中,此选项指定了项目配置。) |
|
/cl_add="<options>" |
允许将其他编译器选项添加到对 cl.exe 的所有调用中。 |
输入一个或多个命令,并以空格字符分隔。这些命令将出现在 cl.exe 命令行中。 示例:BuildConsole MyProj /cl_add="/O2 /FA" |
/cl_rem="<options>" |
指定将从所有属于 cl.exe 的调用中移除的编译器选项。 |
输入一个或多个命令,并以空格字符分隔。这些命令将出现在 cl.exe 命令行中。 示例:BuildConsole MyProj /cl_rem="/Z7 /Zd /Zi /ZI" |
/Clean |
清理与项目及所有依赖项相关的中间文件和输出文件。 |
|
/compile=<source file name> |
使用此选项时,仅构建指定文件。 |
|
/Disable |
禁用 Incredibuild Agent。 |
|
/DisablePdbForwarding |
对此构建禁用 PDB 转发机制。 |
仅适用于 Visual Studio 2010 构建。 |
/DumpSourceFiles=filename |
将项目/解决方案中的所有源文件路径写入文件。 |
<output filename> 为必填项。 |
/Enable |
启用 Incredibuild Agent。 |
|
/Help |
显示使用帮助和版本信息。 |
|
/link_add="<options>" |
允许将附加 linker 选项添加到所有属于 link.exe 的调用。 |
输入一个或多个命令,并以空格字符分隔,这些命令将出现在 cl.exe 命令行中。 示例:BuildConsole MyProj /link_add="/map:MyProj.map" |
/Log[=filename] |
将构建输出写入文件。 |
如果未能输入文件名,则会在当前目录中创建一个名为 Ib_<target-name>.log 的文件。 |
/LogLevel="<Level>" |
覆盖该构建的日志记录级别。 |
<Level> 可为以下选项之一: Minimal、 Basic、 Intermediate、 Extended、Detailed。 |
/MaxCPUS=<n> |
覆盖构建设置中全局最大 CPU/核心数量。 |
|
/MaxWinVer="<Version>" |
指定分配到此构建的远端 Agent 所需的最新操作系统。 |
不会将具有更新操作系统的 Agent 分配给此构建。可用值如下所示:8.1、10。 |
/MinWinVer="<Version>" |
指定分配到此构建的远端 Agent 所需的最早操作系统。 |
不会将具有更旧操作系统的 Agent 分配给此构建。可用值如下所示:8.1 和 10。 |
/Mon[=filename] |
将构建进程(.ib_mon)文件的副本写入指定位置。 |
|
/msbuildargs="/myarg1 /myarg2" |
使用 BuildConsole /command /usemsbuild 开关时,可将附加参数传递给 MSBuild。 |
例如: BuildConsole dcom.sln /rebuild /cfg="debug|win32" /msbuildargs="/detailedsummary" /usemsbuild |
/NO_DOTNET_VIRT |
在 Helper 机器上禁用 .NET 环境虚拟化功能。 |
在命令行中指定此交换机时,该交换机将向 Incredibuild 发出指令,不允许将 Initiator 机器的 .NET 环境虚拟化为 Helper 机器。添加此交换机是为了解决混合 OS 环境中的 .NET 不兼容问题。 |
/NoLogo |
抑制构建输出中所含“Incredibuild”标头。 |
|
/NoRecurse |
仅构建指定的项目配置,忽略这些配置可能具有的子项目。 |
|
/NoWait |
进行指定后,如果由此 Agent 启动的另一构建已在运行,则 BuildConsole 将退出并显示此消息:Another build already running。 |
|
/OpenMonitor |
打开用于显示构建进度的 Build Monitor 窗口。 |
|
/out=filename |
将完整命令行输出重定向到文件。 |
|
/pemode |
覆盖 Agent 预测执行设置。 |
/pemode=0 disables predictive execution /pemode=2 fully enables predictive execution |
/Preset |
确定将使用先前保存在 Batch Build dialog 中的 Preset 构建的项目/配置。 |
|
/Prj=<project name> |
确定要构建的项目。 |
|
/QueryLicense |
显示有关有效许可证、已分配程序包和维护到期日的信息。 |
|
/Rebuild |
在构建项目之前执行 Clean 操作。 |
多次使用 /SETENV 以设置/覆盖多个变量。 |
/Reset |
清除代理文件的缓存内容。 |
|
/SETENV="<name>=<value>" |
为构建运行环境设置或覆盖环境变量。 |
|
/ShowAgent |
显示用于构建各个文件的 Agent。 |
|
/ShowCmd |
为所构建的各个文件显示 Incredibuild 用于构建文件的 command-line。 |
|
/ShowTime |
显示所构建的各个文件的 Start 和 Finish 时间。 |
|
/Silent |
不向标准输出写入任何内容。 |
默认行为即写入构建结果,见于 Build Monitor 的 Output 显示。 |
/Stop[=<build-id>] | 停止当前在本地机器上运行的构建。如果多于一个构建正在运行,请提供 <build-id>。 | 构建被停止时,将返回代码 3。如果使用了 /stop 且当前无构建运行,则返回代码 2。 |
/StopOnErrors | 进行指定后,只要发生错误就会停止执行。 | |
/StopAll |
停止所有当前正在运行的构建。 |
|
/Title=<build title> |
指定将显示于构建输出文本开头的自定义标题行。此标题也将用于 Build History 和 Build Monitor 显示。 |
可用引号将值括入。 |
/UseCloudHelpers |
启用 Cloud Helpers 时,此设置可以确定其是否用于协助当前构建。默认情况下,该值为 True。为防止 Cloud Helpers 协助构建,请设置 /UseCloudHelpers=false.。 |
|
/UseEnv |
使用 PATH、INCLUDE、LIBPATH 和 LIB 环境变量而非 MS Visual C++ IDE 路径。 |
|
/UseIDEMonitor |
使用此选项,从 Visual Studio IDE 运行 BuildConsole 时,集成的 IDE Build Monitor 可显示构建进度。 |
|
/UseMSBuild |
强制使用 MSBuild。 |
默认情况下,Incredibuild 会使用 Devenv 执行构建。Incredibuild 可借助此交换机使用 MSBuild。MSBuild 可借助 /msbuildargs 启用添加特定 MSBuild 标志选项,如下所示。 将自动为 VS 2022 及更高版本使用 64 位 MSBuild,为早期 VS 版本使用 32 位 MSBuild。 如需忽略此自动检测并手动指定要使用的版本,请添加 = 32 或 = 64(例如 /usemsbuild=32) |
/VsVersion="<Version>" |
强制使用特定版本的 Visual Studio 工具集。 |
<Version> 可以是下列之一:
|
/Wait |
如果由此代理启动的另一构建当前正在运行,请等待该构建完成,然后再开始新构建。此亦为默认行为。 |
|
/EnableOlderMSVCSupport=True |
要使用 MSVC 2012-2015 启用 Build Cache,请将此标记设置为 True。 |
该标记默认为 False。 |
Return Codes
BuildConsole 可能会返回以下返回代码:
-
0 – 构建成功且没有出现错误
-
1 – 由于与 Incredibuild 无关的错误(例如编译错误),构建失败。
-
2 – 通过用户请求取消构建
-
3 – 由于 Incredibuild 系统错误构建失败