如何指定自定义的Cargo输出目录?

28

我把这个放在我的Cargo.toml文件中

[build]
target-dir = "../my-target"

然而,货运不识别这个键。

cargo run --release --bin my_project

warning: unused manifest key: build
error: failed to open: /.../project-root/target/releases/.cargo-lock

Caused by:
  Permission denied (os error 13)

使用环境变量的自定义目标目录可行:

CARGO_TARGET_DIR=../my-target cargo run --bin my_project

但是我如何在Cargo.toml中指定'../my-target'?


默认目录在哪里?我找不到Cargo的构建输出。 - Vaishakh
3个回答

27

使用 CARGO_TARGET_DIR 环境变量

CARGO_TARGET_DIR=../my-target cargo run --bin my_project

(虽然问题中已经提到了,但我想强调一下,以防有人跳过这一部分)


如果您在Makefile中指定了一些RUSTFLAGS值,这将非常有效,因为更改RUSTFLAGS值会使已编译的缓存无效 - 除非它存储在单独的文件夹中。 - Thorkil Værge

26

[build] 是一个Cargo级别的配置,而不是针对项目的:

本文将解释Cargo的配置系统如何工作,以及可用的键或配置。有关通过其清单对项目进行配置,请参阅清单格式。

将你的[build]放在$PROJECT_DIR/.cargo/config.toml甚至$HOME/.cargo/config.toml中。请参考上面的链接获取所有选项。


4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接