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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions