用于 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 用于构建文件的命令行。  | 
                                                    
                                                         
  | 
                                                
| 
                                                         /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 不兼容问题。  | 
                                                
| 
                                                         /buildcacheserver=[ip address:port]  | 
                                                    
                                                         使用与 Agent Settings 中定义的构建缓存端点不同的构建缓存端点。还必须指定端口。示例:/buildcacheserver=192.5.8.1:50222  | 
                                                    
                                                         
  | 
                                                
| 
                                                         /buildcacherole=[0/1]  | 
                                                    
                                                         定义构建缓存客户端是向构建缓存提供数据(1)还是不向构建缓存提供数据(0)。  | 
                                                    
                                                         1  | 
                                                
| 
                                                         /UseCloudHelpers  | 
                                                    
                                                         启用 Cloud Helpers 时,此设置可以确定其是否用于协助当前构建。默认情况下,该值为 True。为防止 Cloud Helpers 协助构建,请设置 /UseCloudHelpers=false.。  | 
                                                    
                                                         
  | 
                                                
Return Codes
BuildConsole 可能会返回以下代码:
- 
                                                
0 – 构建成功且没有出现错误
 - 
                                                
1 – 由于与 Incredibuild 无关的错误(例如编译错误),构建失败。
 - 
                                                
2 – 通过用户请求取消构建
 - 
                                                
3 – 由于 Incredibuild 系统错误构建失败
 
Make、Jom和NMAKE样例
在 IncredBuild 安装下的 Samples\Make And Build Tools 文件夹中,有三个预构建的样例项目,用于演示如何使用 IncredBuild。
如要运行样,请执行以下步骤:
- 
                                                
定义路径中可执行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 安装文件夹)
 
 -