如何覆盖Cargo配置目录的位置?

Doe*_*Doe 8 rust rust-cargo

看起来Cargo在搜索其配置目录时的默认行为是查看当前用户的主目录(~/.cargo在我的系统上).如何修改此行为以使Cargo在用户提供的目录中查找?

aSp*_*pex 16

环境变量货物读取

您可以覆盖这些环境变量以更改Cargo在系统上的行为:

  • CARGO_HOME - Cargo维护注册表索引的本地缓存和crate的git checkout.默认情况下$HOME/.cargo,这些存储在 ,但此变量会覆盖此目录的位置.缓存包后,clean命令不会删除它.
  • CARGO_TARGET_DIR - 相对于当前工作目录放置所有生成的工件的位置.
  • RUSTC- 而不是运行rustc,Cargo将执行此指定的编译器.
  • RUSTC_WRAPPER- 而不是简单地运行rustc,Cargo将执行此指定的包装,将其命令行参数传递给rustc调用,第一个参数为rustc.
  • RUSTDOC- 而不是运行rustdoc,Cargo将执行此指定的 rustdoc实例.
  • RUSTDOCFLAGS- 一个以空格分隔的自定义标志列表,用于传递给rustdoc Cargo执行的所有调用.与cargo rustdoc此相反 ,这对于将标志传递给所有 rustdoc实例非常有用.
  • RUSTFLAGS - 以空格分隔的自定义标志列表,以传递给Cargo执行的所有编译器调用.与cargo rustc此相反,这对于将标志传递给所有编译器实例非常有用.
  • CARGO_INCREMENTAL - 如果设置为1,则Cargo将强制为当前编译启用增量编译,当设置为0时,将强制禁用它.如果不存在此env var,则将使用货物的默认值.
  • CARGO_CACHE_RUSTC_INFO - 如果设置为0,则Cargo不会尝试缓存编译器版本信息.

货物文件


层次结构

Cargo允许特定包的本地配置以及git等全局配置.Cargo将其扩展为分层策略.例如,如果调用了Cargo /projects/foo/bar/baz,则将按以下顺序探测并统一以下配置文件:

  • /projects/foo/bar/baz/.cargo/config
  • /projects/foo/bar/.cargo/config
  • /projects/foo/.cargo/config
  • /projects/.cargo/config
  • /.cargo/config
  • $HOME/.cargo/config

使用此结构,您可以指定每个程序包的配置,甚至可以将其检入版本控制.您还可以在主目录中使用配置文件指定个人默认值.

货物文件