如何避免使用cargo install安装工作区二进制包时重复编译?
如何避免使用cargo install安装工作区二进制包时重复编译?
我完全懂这种重复编译的烦躁——明明已经在工作区根目录build过一遍了,用cargo install还要重新编译整个包,既浪费时间又占资源!给你几个实用的解决办法:
直接复制已编译的二进制文件(最快捷的方式)
既然已经用cargo build --package <pkg-name>生成了二进制文件,直接复制到/usr/local/bin就行了,完全绕开cargo install的重复构建逻辑:- 找到编译好的文件:默认在工作区根目录的
target/debug/<binary-name>(因为你用的是devprofile) - 执行复制命令:
sudo cp target/debug/<binary-name> /usr/local/bin/
这种方法简单粗暴,完全不会有重复编译的问题。
- 找到编译好的文件:默认在工作区根目录的
让
cargo install复用本地已有的构建产物
如果还是想通过cargo install的流程来安装,可以给它指定工作区的target目录,让它复用之前的编译结果,不用从头再来:sudo -E cargo install --profile dev --path <binary-workspace-path> --root /usr/local --bin <binary-name> --target-dir ./target这里的
--target-dir ./target是关键,它告诉cargo install直接使用工作区根目录下已有的构建产物,而不是在临时目录重新构建一遍。额外小提醒
如果你在工作区里有多个同名二进制,或者构建时指定了特殊的target,记得确认二进制文件的准确路径,避免复制或安装错文件。另外,要是后续代码有改动,记得重新build后再执行复制或带参数的install命令哦。




