Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

locationtop

注意:

  • 本节内容与 VS 2008 及更低版本相关。

IncrediBuild 可同时构建多个文件,甚至是多个项目。 因此,必须正确定义Solution/工作区中文件和项目之间的依赖项,以避免构建中的潜在问题和错误。

本节对您可能遇到的依赖关系问题进行了回顾。 请仔细阅读本文,以节省您在后期阶段解决依赖关系相关问题将需要的大量时间。

项目级依赖项

源文件依赖项

源文件的文件依赖项由 IncrediBuild 自动处理。 运行增量构建仅会编译过时的文件,或引用过时的文件(例如使用“#include”或“#import”语句)。

预编译标头

使用预编译标头的所有文件在构建完预编译标头之前不会开始编译。 请注意,如果使用预编译标头的 MSVC 默认选项被保留在项目中,但 stdafx.h 几乎为空,则建议从项目中删除 stdafx.cpp 并将项目设置设置为“Not using precompiled headers”。

Solution/工作区级依赖项

您可以使用“Project”菜单中的“Dependencies...”命令来定义Solution/工作区中项目之间的依赖项。 在定义项目间依赖关系时,需要特别注意以下情况:

链接依赖项

与Solution/工作区中的其他项目生成的库相链接的项目必须将这些项目作为子项目包括在内,以避免在其中一个 LIB 文件准备就绪之前启动链接阶段。 请注意,在 MSVC 构建中可正确构建的Solutions和工作区可能因为缺少此类依赖关系声明而在 IncrediBuild 构建失败。

MIDL、自定义、预链接、构建后和预构建步骤

包含将会影响Solution/工作区中另一个项目的编译的构建步骤的项目必须作为受影响项目的子项目包含在内。 此类步骤的常见示例是代码生成工具(如 YACC 和 LEXX),以及将输出文件复制到另一个项目使用的位置的步骤。 另一种常见情况是源文件包含对 MIDL 编译器(TLB 文件、标头文件等)在另一个项目中生成的文件的预处理引用。 如果Solution/工作区未正确定义两个项目之间的依赖关系,则编译器可能使用不正确的文件版本或因编译错误而失败。

关于构建速度以及使用自定义、预链接、构建后和预构建步骤的注释:
请考虑以下情况:项目 B 是项目 A 的子项目,并包含项目级自定义构建步骤、预链接步骤或构建后步骤。因此,在项目 B 的步骤执行完成之前,项目 A 不会开始编译。 虽然这确保了项目能被成功构建(只要正确定义了依赖项),但如果项目 A 的源文件不需要项目 B 的步骤,它也可能无理地减慢构建速度。 在这种情况下,使用 IncrediBuild_AllowOverlap 指令将指示 IncrediBuild 不推迟项目 A 的编译。

...

VS 2008 及更低版本:

Child pages (Children Display)
styleh4
pageVisual Studio 2008 and Earlier

IncrediBuild Solutions 简介:

Child pages (Children Display)
styleh4
pageIncrediBuild Solutions

用户手册:

...

Image Added