我用
cargo build —-lib
构建我的 rlib。然而,当我将它与rustc main.rc —-extern mylib=mylib.rlib
一起使用时,我收到了编译错误can’t find crate for xxx which mylib depends on
。
如何获得包含所有依赖项的 rlib?
如何获得包含所有依赖项的 rlib?
你不能。
.rlib
文件是编译 one crate 的结果。
那么跨项目共享编译库的正确方法是什么?
Rust 工具链一般不支持此功能。
造成这种情况的主要原因之一是库具有Cargo功能,它定义是否应启用某些条件编译代码,并且相同主要版本的库预计不会重复。将这些属性放在一起意味着您不能指望单独编译库及其依赖项会产生正确的结果(因为包含的某些依赖项可能缺少单独编译的依赖项所需的功能,但不得重复) - 编译需要查看库箱依赖关系的整个图表。
您可以通过将所有这些包放在一个工作空间中来分摊编译一个库以供另一组包使用的成本,但是工作空间是为编译一组密切相关的包而设计的,不一定适合组合任意的。