相关疑难解决方法(0)

Cargo可以在不构建应用程序的情况下下载和构建依赖项吗?

有没有办法告诉Cargo安装和构建我的所有依赖项,但是没有尝试构建我的应用程序?

我想cargo install会这样做,但它实际上也一直在构建我的应用程序.我想进入一个状态,在那里cargo build可以找到所有依赖项,但无需触及/src目录.


我真正想要实现的目标:

我正在尝试为Rust应用程序构建Docker镜像,我想在其中执行以下步骤:

建立时间(docker build .):

  1. 导入已安装防锈工具的docker镜像
  2. 添加我的Cargo.toml和Cargo.lock文件
  3. 下载并构建所有依赖项
  4. 将我的源目录添加到图像
  5. 构建我的源代码

运行时间(docker run ...):

  1. 运行应用程序

我已经尝试了以下内容Dockerfile,但是指示的步骤也构建了我的应用程序(由于源目录尚未存在,当然会失败):

FROM jimmycuadra/rust

ADD Cargo.toml /source
ADD Cargo.lock /source

RUN cargo install # <-- failure here

ADD src /source/src
RUN cargo build

ENTRYPOINT cargo run
Run Code Online (Sandbox Code Playgroud)

我想将安装依赖项步骤与实际构建我的应用程序分开的原因是,如果我不更改依赖项,我希望Docker能够使用已安装和构建所有依赖项的缓存映像.因此,我不能ADD /src /source/src,直到安装依赖条件,因为当我改变我自己的代码,将无效缓存图像.

rust rust-cargo

18
推荐指数
4
解决办法
2173
查看次数

我可以阻止货物在每个新项目中重建图书馆吗?

假设我执行cargo new one --bincargo new two --bin然后添加相同的依赖于每个项目的Cargo.toml并构建它们.

现在有两组完全相同的库:

/ one/target/debug/deps/*.rlib

/ two/target/debug/deps/*.rlib

它们是相同的文件和浪费的存储空间,但问题是我必须为每个项目再次编译这些库.这需要很长时间.有同样的问题cargo install.

我可以指定存储已编译库的位置以避免重新编译吗?

rust rust-cargo

9
推荐指数
2
解决办法
919
查看次数

标签 统计

rust ×2

rust-cargo ×2