无论它们是在配置文件中定义的还是在包配方中定义的,build_ask的行为都是相同的。

    • 只有当某些包必须从源代码构建并与声明的模式匹配时,才会检索和安装它们。否则,甚至不会检查它们的存在。
    • 配置文件和命令行中声明的选项和环境变量将影响包的构建要求。这样,您可以为cmake/3.16.3 包定义将安装的CMake版本。
    • 将为匹配的包激活构建要求,请参见上面关于构建要求上下文的部分,以了解该包将传播给其消费者的信息。
    • 构建需求也可以是可传递的。他们可以声明自己的要求,包括正常要求和自己的构建要求。依赖关系图解决的常规逻辑适用,例如冲突解决和依赖关系覆盖。
    • 每个匹配模式将产生不同的构建需求依赖关系图。这些图被缓存,因此它们只被计算一次。如果构建要求适用于具有相同配置的不同包,它将只安装一次 (与正常依赖项相同的行为-一旦它们在本地缓存,无需重新检索或构建它们)。
    • 构建要求不影响二进制包ID。如果使用不同的构建要求生成不同的二进制文件,则应考虑添加选项或设置以对其进行建模 (如果尚未建模)。
    • 也可以使用版本范围,如工具/[>0.3]@ 用户/渠道。
    • 构建要求未在conan info中列出,也未在图中表示 (使用conan info — graph)。