EXCLUDE_FROM_ALL

在子目录上将此目录属性设置为真值,以将其目标从其祖先的“all”目标中排除。如果被排除,例如在父目录中运行 make 将默认不构建子目录中的目标。这不影响子目录本身的“all”目标。例如在子目录内运行 make 仍将构建其目标。

EXCLUDE_FROM_ALL 适用于子目录包含项目中有用但非必需的独立部分时,例如一组示例,或者集成第三方库。通常,子目录应包含自己的 project() 命令调用,以便在子目录中生成完整的构建系统(例如 Visual Studio IDE 解决方案文件)。请注意,目标间依赖关系优于此排除。如果父项目构建的目标依赖于子目录中的目标,则被依赖的目标将包含在父项目构建系统中以满足依赖关系。

如果提供了 EXCLUDE_FROM_ALL 参数,它具有以下效果:

  • 在子目录或以下定义的目标将不会包含在父目录的 ALL 目标中。这些目标必须由用户显式构建,或者作为另一个将要构建的目标的依赖项。

  • 在子目录或以下定义的目标将从 IDE 项目文件中排除。

  • 在安装父目录时,在子目录或以下定义的任何安装规则都将被忽略。

请注意,这些效果与 EXCLUDE_FROM_ALL 目标属性的效果不同。