Skip to content

Commit 5c2dabb

Browse files
committed
docs(zh): mirror §2.8.2 [feature-deps] into the Chinese manifest reference
1 parent 1804fc2 commit 5c2dabb

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

docs/zh/05-mcpp-toml.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,40 @@ compat.openblas = "0.3.0" # provider 必须是图中真实存在的依赖
341341
被绑定 provider 的链接/头文件旗标经由常规依赖机制流到消费方;capability 层是那道
342342
*选择与校验* 步骤,把"静默选错后端 / 缺后端"变成构建期的显式报错。
343343

344+
### 2.8.2 `[feature-deps.<name>]` —— 由 feature 拉取的依赖
345+
346+
`[feature-deps.<name>]` 下声明的依赖是**可选的**:仅当该 feature 激活时(根 `--features`,
347+
或某依赖 spec 的 `features = [...]`)才会被解析。`[dependencies]` 中的依赖始终被解析;
348+
可选性由声明的*位置*表达,而非某个标志位。
349+
350+
```toml
351+
[features]
352+
use_blas = { defines = ["EIGEN_USE_BLAS"], requires = ["blas"] }
353+
backend-openblas = { implies = ["use_blas"] }
354+
355+
# 仅当 `backend-openblas` 激活时才拉取。每个条目都是完整的依赖 spec
356+
#(version/path/git + 其自身的 features)。
357+
[feature-deps.backend-openblas]
358+
compat.openblas = "0.3.x"
359+
```
360+
361+
该机制与能力(§2.8.1)组合:单个 `backend-openblas` feature 既**拉取** provider
362+
(`compat.openblas`,其 `provides = ["blas"]`),又**开启**消费方开关
363+
(`implies = ["use_blas"]`,其 `requires = ["blas"]`)。当图中只有一个 provider 时,
364+
能力自动绑定——消费方只需写 `features = ["backend-openblas"]`
365+
366+
在索引包的 Lua 描述符中,等价写法为内联形式:
367+
368+
```lua
369+
features = {
370+
use_blas = { defines = { "EIGEN_USE_BLAS" }, requires = { "blas" } },
371+
["backend-openblas"] = {
372+
implies = { "use_blas" },
373+
deps = { ["compat.openblas"] = "0.3.x" },
374+
},
375+
}
376+
```
377+
344378
### 2.9 `[profile.<name>]` — 构建档案
345379

346380
```toml

0 commit comments

Comments
 (0)