如何避免使用cargo install安装所有bin目录下的文件?
解决cargo install自动安装src/bin下所有二进制文件的问题
当项目src/bin目录下存在多个.rs文件(比如cli.rs和dev.rs),即使在Cargo.toml中手动指定了[[bin]]条目,运行cargo install时依然会安装所有二进制文件——这是因为Cargo默认启用了autobins特性,它会自动把src/bin下的每个.rs文件识别为独立的二进制目标,手动添加[[bin]]并不会覆盖这个自动发现规则。
要只安装你指定的二进制文件,只需两步:
- 在Cargo.toml的[package]区块中添加
autobins = false,关闭自动二进制发现功能 - 保留手动指定的[[bin]]条目,明确要安装的目标
修改后的Cargo.toml示例:
[package] name = "your-crate-name" version = "0.1.0" edition = "2021" autobins = false # 新增这一行 [[bin]] name = "cli" path = "src/bin/cli.rs"
之后再运行cargo install,就只会编译并安装cli这个二进制文件,dev.rs不会被处理。
如果不想关闭全局的autobins,也可以把不需要安装的dev.rs移动到src/bin以外的目录(比如src/dev/bin),这样Cargo就不会自动识别它为二进制目标,但这种方式不如修改配置来得直接。
内容的提问来源于stack exchange,提问作者Huakun Shen
相关产品推荐
相关产品推荐

