Incredibuild 与 Visual Studio 集成模式
您可以通过 External 模式(默认)或 Internal 模式在 Visual Studio 中执行构建。您还可以针对不同的构建项目改变模式。
注意:无论选择那种模式,CMake 项目 总是以 Internal 模式执行。
-
在 Visual Studio 中,点击 Tools > Options,或 Incredibuild > Extension Settings,或 Extensions > Incredibuild > Extension Settings。
-
选择 Incredibuild Extension > Integration Mode,然后选择所需的 Incredibuild Integration 模式。
External 模式
External 模式下,Incredibuild 会绕过 Visual Studio 设置和程序,从头至尾全程控制构建项目进程。虽然 Incredibuild 是在 Visual Studio 中激活的,但它运行在 Visual Studio 的本地进程外。在 Incredibuild 9.5.0 版本发布前这是唯一的运行模式。在 External 模式下启动构建确实会消耗额外的内存,而且初始化过程也比较慢。
External 模式特性包括:
-
预测性执行(并非 Visual Studio 原生功能)。该功能在不存在依赖关系的条件下,通过增加编译任务的并行执行数量,进一步优化构建速度。
-
Batch Build 功能。
-
基于 Visual Studio 运行的构建项目输出结果与使用 Incredibuild BuildConsole 通过 CLI 运行的构建项目输出结果相同。
-
构建项目的进度和输出结果会在 Visual Studio 的 Incredibuild Build Monitor 中显示。
-
Visual Studio 的 Output 窗口会显示 Build Order 视图(而不是 Internal 模式下的 Projects 视图):
Internal 模式
如果您想要将 Visual Studio 上的特殊设置应用到您的构建中,或是应用所有 Visual Studio 构建后的窗口、程序、扩展以及消息,那么您可以选择开启 Internal 模式。
注意:Internal 模式仅支持 Visual Studio 2017 及更高版本。
Internal 模式特性包括:
-
Visual Studio 基于原生程序和配置执行构建项目,而 Incredibuild 会对构建进程进行整合。Visual Studio 的配置和程序会在构建中生效。输出结果更偏向于 Visual Studio 的原生构建结果。
-
所有执行活动和构建后进程都会按 Visual Studio 执行方式正常运作,仿佛 Incredibuild 并未参与其中。这种模式的构建所需时间比 External 模式更短。
-
构建的输出结果和错误都将显示在 Visual Studio 的原生窗口中。
-
Visual Studio Output 窗口中会显示 Build Order 视图。
-
并且还支持在 Output 窗口中展示用于跟进构建进度或处理结果的扩展。
-
Error List 包含了构建结果,显示过滤后的构建错误视图,方便用户前往查看源代码。
-
多数情况下,从 Visual Studio 执行构建时的输出结果与使用 Incredibuild BuildConsole CLI 执行构建时的输出结果会有所不同。这是因为Visual Studio 中配置的特殊设置在通过 Visual Studio 执行时会应用到构建中,但通过 Incredibuild BuildConsole CLI 执行时却没有应用相应配置。
Internal 模式下不支持的 Incredibuild 功能和优化能力:
-
如果使用了 Batch Build 功能,一旦构建开始,Incredibuild 便会自动将当前模式切换到 External 模式。
-
如果在 Agent Settings 中开启了预测执行程序功能,一旦构建开始,Incredibuild 会自动禁用该功能,即构建会在该功能不生效的情况下按 Internal 模式进行。
-
Use environment variables instead of IDE paths 和 Force 64-bit toolset 选项不适用于 Internal 模式。
-
Incredibuild Build Monitor 中的 Projects 视图不可用,并由 Visual Studio Output 窗口中的 Build Order 视图替代(展示按项目分类的输出结果)。
-
部分在注册表中配置的 Incredibuild 选项不适用于 Internal 模式。