gpt4 book ai didi

rust - 我可以阻止 cargo 在每个新项目中重建库吗?

转载 作者:行者123 更新时间:2023-11-29 07:44:29 25 4
gpt4 key购买 nike

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

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

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

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

它们是相同的文件并浪费存储空间,但真正的问题是我必须为每个项目重新编译这些库。这需要很多时间。 cargo install 也有同样的问题。

我可以指定一个地方存放编译后的库以避免重新编译吗?

最佳答案

多个 Cargo 项目可能会通过使用相同的目标目录来共享库。

.cargo/配置

在项目中放置一个“.cargo”文件夹并在其中创建一个“config”文件,其中包含:

[build]
target-dir = "/path/to/your/shared/target/dir"

在 Unix 上这可能是这样的:

mkdir ~/shared_rust_target
mkdir .cargo
echo "[build]" > .cargo/config
echo "target-dir = \"$HOME/shared_rust_target\"" >> .cargo/config

CARGO_TARGET_DIR

设置CARGO_TARGET_DIR environment variable .

在 Unix 上这可能是这样的:

export CARGO_TARGET_DIR = "$HOME/shared_rust_target"

参见 this commit一些额外的 target-dir 文档。

特别是,在 Cargo 1.9 之前,您不应该同时将多个项目构建到同一个目标目录中。 (关于 Cargo 1.9 如何支持并发构建的 Here's more)。

target-dirCargo docs 中也提到了.

应该工作,根据 this issue .


附言现在也可以通过 workspaces 实现 crate 重用.


附言https://docs.rs/cargo-hakari/latest/cargo_hakari/有助于保持项目之间的某些依赖项兼容。

关于rust - 我可以阻止 cargo 在每个新项目中重建库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com