繁体   English   中英

为什么货物构建缓存无效?

[英]Why is cargo build cache invalidating?

我有一个准系统工作区项目:

.
├── build-debug.sh
├── Cargo.lock
├── Cargo.toml
├── common
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── rs-test.iml
├── server
│   ├── Cargo.toml
│   └── src
│       └── main.rs
└── wui
    ├── Cargo.toml
    └── src
        └── lib.rs

rs 文件要么是空的,要么只是一个空的主函数。

服务器和 wui 依赖于 common: common = { path = "../common" }

通用项目有一个 crates.io 依赖项,我想是构建脚本或 proc 宏依赖项。

构建脚本:

cargo build -p wui --target wasm32-unknown-unknown
cargo build -p server

问题:

当我重建未更改的项目时,一些 wui 依赖项变得无效/重建,服务器也是如此。

任何一个:

  • 删除 wasm32 目标标志
  • 使用没有构建时编译依赖项的简单 crate 替换依赖项

它不再重建子项目。

这是货物错误吗? 我能做什么?

这可能不是货物错误。 这里可能发生的情况是您的 crates.io 依赖项(您没有提及它是什么,这可能很有用)根据目标架构具有不同的依赖项或功能。 因此,当您在构建 WASM 目标和主机目标之间交替时,正在重建内容。

也许在这种情况下停止使用 Cargo 工作区并分别构建服务器和 wui 会更好; 通过这种方式,您将为服务器和 wui 拥有单独的target目录,这会占用一些额外的磁盘空间,并且非增量编译需要更长的时间,但会阻止您在构建两者时一直重建这些东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM