我们使用cargo构建Rust程序时,默认会在源代码根目录的target目录里,生成输出文件,以及编译依赖的包。
有时候,我们需要把源代码与输出分开存放。可不可以把target定位在源代码目录外面呢?
当然可以。
使用cargo命令行参数
根据cargo文档 ,第一种方法,就是在使用cargo的build命令的时候,通过--target-dir来指定。
比如我们有一个项目叫hello,在/home/user/hello目录下有cargo.toml。我们就可以进入hello目录以后,通过:
cd /home/user/hello
cargo build --target-dir=/tmp/hello
命令,把编译的输出定位在/tmp/hello目录里。
使用cargo的配置文件
命令行参数需要每次执行的时候输入,比较麻烦。
根据cargo文档 ,还可以还可以写死在cargo的配置文件里。
注意是cargo的配置文件,不是项目的配置文件
Cargo的配置文件,是源代码根目录下的.cargo/config.toml文件,也可以针对每个模块建立.cargo/config.toml,还可以是全局的,即用户目录下的配置文件:$HOME/.cargo/config.toml。
在config.toml配置文件里,配置[build] target-dir 项,就可以自定义target目录了。
比如:
[build]
target-dir = "/tmp/hello"
在hello里执行
cargo build
或者
cargo run
的时候,输出文件就生成在/tmp/hello目录里了。