用于 Visual Studio 的 BuildConsole
BuildConsole.exe 位于 Incredibuild 安装文件夹,是一个 console 应用程序,您可以利用它从命令行运行分布式 Visual Studio 构建。
使用 IBConsole.exe 命令行界面即可运行分布式作业,该作业使用了 Incredibuild Interfaces 扩展包的其中一个界面。该界面可用于加速您的自定义工具,例如渲染、模拟、单元测试、QA 测试和脚本。
要运行 BuildConsole.exe,需要运行:
BuildConsole <Target> [可选]
下列任一选项均可作为 <Target>:
- 
                                                
转到 Visual Studio 解决方案 (.sln file) 的路径
 - 
                                                
转到 Visual Studio (.vcproj/.icproj/.vcxproj file) 的路径
 - 
                                                
转到 Visual Studio 版本 6.0 工作区 (.dsw file) 的路径
 - 
                                                
转到 Visual Studio 版本 6.0 项目 (.dsp file) 的路径
 - 
                                                
转到 eVC 版本 4.0 工作区 (.vcw file) 的路径
 - 
                                                
转到 eVC 版本 4.0 项目 (.vcp file) 的路径
 
在构建特定项目时,BuildConsole 命令不会强制您将 .sln 文件作为构建命令的一部分。但不建议省略 .sln 参数。项目文件中可能缺少某些 Incredibuild 用以正确编译项目的信息。在 Incredibuild 的 BuildConsole 命令中添加了一个 /VsVersion 标志,便于您指定 Incredibuild 用以构建项目的 Visual Studio 版本。
示例:
- 
                                                
如需在 MySln.sln 解决方案中重新构建 Debug|Win32 解决方案配置:
BuildConsole.exe MySln.sln /rebuild /cfg="Debug|Win32”
 - 
                                                
如需针对 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 命令行的响应文件。  | 
                                                    
                                                         当用于运行 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。  | 
                                                
| 
                                                         /buildcacheserver=[ip address:port]  | 
                                                    
                                                         使用与 Agent Settings 中定义的构建缓存端点不同的构建缓存端点。还必须指定端口。示例:/buildcacheserver=192.5.8.1:50222  | 
                                                    
                                                         
  | 
                                                
| 
                                                         /buildcacherole=[0/1]  | 
                                                    
                                                         定义构建缓存客户端是向构建缓存提供数据(1)还是不向构建缓存提供数据(0)。  | 
                                                    
                                                         1  | 
                                                
| 
                                                         /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 分配给此构建。可用值包括:XP、2003、VISTA、2008、7 和 10。  | 
                                                
| 
                                                         /MinWinVer="<Version>"  | 
                                                    
                                                         指定分配到此构建的远端 Agent 所需的最早操作系统。  | 
                                                    
                                                         不会将具有更旧操作系统的 Agent 分配给此构建。可用值包括:XP, 2003, VISTA、2008、7, 8 和 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 用于构建文件的命令行。  | 
                                                    |
| 
                                                         /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> 可以是以下其一:vc10(用于 VS2010)、 vc11(用于 VS2012)、 vc12(用于 VS2013)、 vc14(用于 VS2015)、 vc15(用于 VS2017)和 vc16(用于 VS2019)。  | 
                                                
| 
                                                         /Wait  | 
                                                    
                                                         如果由此代理启动的另一构建当前正在运行,请等待该构建完成,然后再开始新构建。此亦为默认行为。  | 
                                                    
Return Codes
BuildConsole 可能会返回以下代码:
- 
                                                
0 – 构建成功且没有出现错误
 - 
                                                
1 – 由于与 Incredibuild 无关的错误(例如编译错误),构建失败。
 - 
                                                
2 – 通过用户请求取消构建
 - 
                                                
3 – 由于 Incredibuild 系统错误构建失败