Skip to content

[enhancement] manifest [features] 支持条件依赖与依赖 feature 转发(dep/feat;挡住 opencv 模块包的 opencv.dnn 接口) #243

Description

@Sunrisepeak

诉求

mcpp.toml(manifest)侧的 [features] 目前支持 sources/implies/defines,
但不支持:

  1. feature 条件依赖(描述符 lua 侧 0.0.97 已支持 features.x.deps,
    manifest 侧没有对应物);
  2. 向依赖转发 feature(cargo 的 dep/feat 语法对应物):
    features.dnn = { deps-features = { "compat.opencv" = ["dnn"] } } 之类。

场景(opencv-m 的 opencv.dnn 模块接口,mcpp-index PR #79 后续)

compat.opencv 已带 dnn feature(+309 TU)。opencv 模块包想提供
import opencv.dnn;,理想形态:

[features]
dnn = { sources = ["src/dnn.cppm"], forward = { "compat.opencv" = ["dnn"] } }

消费端 opencv = { version = "0.0.3", features = ["dnn"] } → 模块包启用
dnn.cppm 源 + 依赖的 compat.opencv 以 features=["dnn"] 解析。没有 (2),
模块包只能永远全量拉 dnn(所有消费者多 300 TU)或不提供 dnn 模块接口。

环境

mcpp 0.0.97

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions