我正在使用cargo
,maturin
并pytest
构建一个混合的 Python/Rust 项目。在开发过程中,我经常循环使用以下命令:
$ cargo test -p mypkg --release
$ maturin develop --release
$ python -m pytest --failed-first my_pkg
似乎 cargo 和 maturin 在没有理由的情况下编译依赖项。经过一些实验,我发现如果我运行
cargo ...
maturin ...
cargo ...
maturin ...
第二次运行cargo
andmaturin
将重新编译依赖项,即使我没有手动更改任何源文件。
我没有一个小例子来重现这个,所以我试图用完整的系统来调试它。为此,我想知道 cargo 和/或 maturin 认为哪些文件已过时。一旦我知道这一点,完整的解决方案可能会很明显。
但是,似乎没有我可以传递的标志给我这些信息。 cargo -vv test ...
产生很多关于它正在编译什么以及如何编译的输出,但不是为什么。 maturin
甚至似乎没有-v
可用的标志。
我找到cargo-outdated
了,但这似乎与依赖版本有关。
我有两个 Rust 包,每个包有 5-10 个直接依赖项和大约 100 个总依赖项。
如何找出导致cargo
/maturin
重建依赖项的文件?