如何在Rust的.cargo/config.toml中配置多个目录源?
如何让Cargo使用多个目录的vendored依赖
可以实现,有两种常用方案:
方案1:单源配置多目录(推荐)
Cargo支持在单个directory类型的源中,用directories数组指定多个vendored目录,构建时会按配置顺序依次检查这些目录里的包。
修改.cargo/config.toml如下:
[source.crates-io] replace-with = "vendored-sources" [source.vendored-sources] directories = [ "relative/path/to/first/vendored/dir", "relative/path/to/second/vendored/dir", # 可继续添加更多目录,路径相对.cargo目录的父目录 ]
每个目录下需存放以「包名-版本」命名的子目录(即解压后的.crate文件内容)。
方案2:多源链式替换
如果需要对不同目录做更细粒度的控制,可定义多个独立的directory源,通过链式replace-with让Cargo依次检查:
[source.crates-io] replace-with = "vendored-group-1" [source.vendored-group-1] directory = "relative/path/to/group1/vendored/dir" replace-with = "vendored-group-2" [source.vendored-group-2] directory = "relative/path/to/group2/vendored/dir" # 若需要保留crates.io作为最终 fallback,添加此行 # replace-with = "crates-io"
这种方式下,Cargo会先从vendored-group-1查找依赖,找不到则转向vendored-group-2;如果配置了最后一行的回退,还会在所有vendored目录都找不到时去官方源查找。
内容的提问来源于stack exchange,提问作者Keyboard Penman
相关产品推荐
相关产品推荐

