Visual Studio 构建

General

General 页面包含与 Agent 发起的 VS 构建相关的配置选项:

Multiple CPU/Core Utilization

允许链接步骤在本地并行运行:

该选项决定了是否允许不同项目的链接步骤在 Initiator 计算机上并行执行。建议仅在您的系统内存支持多链接步骤的情况下选择该选项。

Max.number of CPU/Cores used for parallel linking:

启用 Allow linking steps to run in parallel locally 时,输入可用于在某一指定位置并行执行链接步骤的最大 CPU 或内核数。

允许不可分发的自定义步骤在本地并行运行:

该选项决定了是否允许在本地计算机上并行执行未做分配标记的自定义步骤/规则(通过 rem Incredibuild_AllowRemote 目录)。若未勾选该选项,将按顺序执行所有不可分配的自定义步骤/规则。

说明:
  • 适用于 Visual Studio 2008 或更早版本。

  • 并行执行多条链接可大幅提升构建效率。建议先测试可并行执行的最大链接数。

Projects

Build all projects regardless of errors

勾选该选项后,即使某一独立配置执行失败并提示构建错误,Incredibuild 仍会继续处理构建项目中剩余的配置内容。构建项目时,通过在 Batch Build 对话框选择不同的值可在对应项目中覆盖该选项。新选项将会应用到后续构建项目中。

Advanced

Advanced 页面包含与 Agent 发起的 Visual Studio 构建相关的高级配置选项:

Build Options (Visual Studio .NET / 2005 / 2008)

Build non-C/C++ projects

勾选该选项后,Incredibuild 将在本地计算机上构建非 C/C++(Visual Basic、C#、开发)项目。当您的方案中存在混合项目(C/C++ 和非 C/C++)时可勾选该选项。构建非 C/C++ 项目时,Incredibuild 会生成运行 devenv.exe (带 /build 参数)的子进程来构建项目。

禁用该选项后,Incredibuild 将会忽略非 C/C++ 项目。

Build non-C/C++ projects in parallel locally (when possible)

勾选该选项后,将在本地计算机的 CPU/内核 (有“Multiple CPUs/Cores”扩展包的 Agent 上)上并行构建非 C/C++ 项目(C#、VB等)。鉴于某些情况下并行执行 C# 项目会出现文件访问冲突错误,所以系统默认不启用该选项。

Environment

Use Environment variables instead of IDE paths

勾选该选项后,Incredibuild 将使用本地环境变量(INCLUDE、LIB 和 PATH)而不是 IDE 中设置的变量。

预测执行程序 (Visual Studio 2010 and higher)

Enhance throughput using out-of-order tasks spawning

启用该选项(VS2010 或更高版本)可通过指示 Incredibuild 以经过优化的顺序执行 Visual Studio 任务 (编译、链接、RC 等),从而大幅提升构建效率。通过这种方法执行任务的顺序不一定与 Visual Studio 的执行顺序一致。

Incredibuild 会尝试增加 Visual Studio 的构建任务吞吐量,从而激发构建性能和 CPU 利用率。应用场景示例:项目 B 依赖于项目 A。通常情况下,Visual Studio 和 Incredibuild 都会先完成整个 A 项目的编译和链接,然后再处理项目 B。启用“predictive execution”后,Incredibuild 可能会推断出项目 B 的某些编译任务可以与项目 A 的任务同时执行。

重要提示:

“预测执行程序”功能目前不支持下列平台/编译器,需在使用时禁用该功能:WiiUCaféNintendo 3DSCUDAcompiler。禁止在使用上述工具中任何一种的计算机上启用“预测执行程序”功能。

PDB File Allocation

Limit Concurrent PDB file instances to X

勾选该选项后,Incredibuild 将限制同一项目中可并行构建的文件数量。这样只有少数 PDB 会被处理,从而加快链接时间。勾选该选项还能限制构建中的并行任务数量,即特定项目中可并行执行的编译任务数量不能超过设定的值。例如,如果你有两个可并行执行的项目,并且勾选了该选项将并行 PDB 文件实例数量限制为 8。假设每个项目包含 100 个编译任务,最终会执行十六个编译任务 – 项目 A 和项目 B 分别执行八个任务。

建议启用该功能前使用不同的值进行测试。通常而言,项目数量越多,任务可并行处理的可能性也就越大,所以该功能更适用于涉及大量项目的方案。

Force 64-bit toolset

勾选该选项后,Incredibuild 将在 Visual Studio 环境中使用 Visual Studio 的原生 64 位工具集而非默认的32 位工具集执行构建项目。该功能仅会对运行在 VS 2013 和 VS 2015 环境中的构建项目生效。

选择该选项可提升一定的性能,同时解决与 Linker 内存相关的各种问题,比如 LNK1318 用作 Linker 时可使用更多内存。

(目标代码)连接器

(目标代码)连接器页面包含与 Visual Studio 构建中的链接阶段相关的配置选项:

Link Options (Visual Studio 6.0)

Don't separate types when linking

勾选该选项后,即使项目中明确指定的为 /pdbtype:sept 选项,Incredibuild 仍然仅使用 /pdbtype:con 链接器选项。勾选该选项后,Incredibuild 会将整个项目的调试信息存储在单个而非多个 PDB 文件中。请注意,Incredibuild 会为每个参与构建的 Agent 创建不同的 PDB 文件,因此当该选项未勾选时,任何访问该项目调试信息文件的脚本均需要将该情况考虑在内。

注意:该功能仅对 MSVC 6.0 构建生效。与 /pdbtype 链接器选项相关的更多信息请查阅 MSDN 库话题 “/PDBTYPE”。

IncrediLink (Visual Studio .NET / 2005 / 2008)

启用 IncrediLink 模式,加快增量链接速度。

控制 IncrediLink 选项与功能对等的“Use Library Dependency Inputs” Visual Studio 项目设置的对应方式。

Browse Information

The Browse Information 页面用于控制 Agent 创建项目浏览信息的方式。

Browse Information Creation

MSVC 的浏览信息功能可以使源代码导航到符号定义和声明部分,自动完成函数参数以及其他功能。使用过程中,编译器会为每个源文件生成一个扩展名为 .SBR 的文件。每次构建结束时,通过运行 BSCMake 工具生成浏览信息,该工具将 .SBR 文件 “链接”到 MSVC 用于浏览信息的单个文件中(扩展名为 .BSC)。生成浏览信息会影响构建速度,因此不会一直启用该功能。

创建浏览信息时,Incredibuild 提供下列行为选项:

Always generate .SBR files according to project settings

勾选该选项后,只有当正在构建的配置在 C/C++ 页面 (VC6.0) 指定了“Generate browse info”或在 C/C++->Browse information 页面 (VC.NET) 指定了“Enable browse information”时才会生成 .SBR 文件(用于构建浏览信息)。取消勾选该选项,Incredibuild 将根据 “Generate .BSC file”设置决定是否生成 .SBR 文件。而在同时应用 Incredibuild 和 MSVC 构建使用预编译头文件的项目时,这可能会导致互操作性问题。

Generate .BSC (Source Browser database) file:

该选项用于控制 Incredibuild 是否执行构建浏览信息的 BSCMake 步骤。可选择的选项如下:

  • According to 'Generate browse info' project setting – MSVC Project Settings 对话框的 C/C++页面定义了编译时是否生成 .SBR 文件。选择该选项后,Incredibuild 仅在勾选了 Project Settings 的 “Generate browse info”选项时才会生成浏览文件。请注意,“Build browse info file”设置(可在 Project Settings 对话框的“Browse Info”页面找到选项)不会对 Incredibuild 的行为产生任何影响。
  • Never – 任何情况下均不生成浏览文件。该选项为默认选项。
  • Always – 总是生成浏览文件。
  • Only for configurations containing these words – 允许指定字符串列表,供 Incredibuild 在配置名称中查找。如果查找到一条或多条内容,则会相应生成配置的浏览信息。支持输入多条字符串,并用逗号或分号分隔。例如,如果在该选项中使用“Debug”字符串,Incredibuild 将为所有包含“Debug”的配置生成浏览信息。请注意,关键词搜索不区分大小写。

注意:勾选“Always generate .SBR files according to project settings”后,“Generate .BSC file”选项和项目设置若存在冲突,将以具体项目设置为准

Interoperability

The Interoperability 页面用于控制 Incredibuild 的互操作性模式状态。互操作性模式若为启用状态,Incredibuild 生成的中间文件可以与 Visual Studio 生成的中间文件互换使用。互操作性模式若处于禁用状态,则可能无法构建使用预编译头文件并包含混合构建源(Incredibuild 和标准 MSVC 构建)编译的 .OBJ 文件的项目。

请注意,针对下列工具必须启用互操作性模式:

  • Visual Studio .NET(所有平台)
  • Visual Studio 2005 (所有平台)
  • Visual Studio 2008 (除 Win32 以外的平台)。

互操作性模式为启用状态时,微软的编译器可执行文件 (cl.exe) 将被修改,并加入对“xgInterop.dll”(存储在 Windows System32 文件夹中的 Incredibuild 动态库)的依赖,从而实现 Incredibuild/Visual Studio 互操作性。禁用互操作性模式会将编译器可执行文件恢复到原始状态并移除添加的依赖。

Visual Studio .NET / 2005 / 2008 Interoperability

可选择以下动作按钮:

Enable – 启用 Visual Studio 互操作性

Disable – 禁用 Visual Studio 互操作性

显示屏会列出所有互操作性模式适用的构建平台,以及相应的编译器文件路径。