rust 为什么cargo每次修改都要重新编译

7tofc5zh  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(183)

最近我注意到,我对项目所做的每一个更改,cargo build都会重新编译一大块依赖项。我使用verbose选项运行构建,我看到这是由x11-dl导致的,它使用了pkg-config

Dirty x11-dl v2.21.0: the env variable PKG_CONFIG_PATH changed
Compiling x11-dl v2.21.0

个字符
我尝试过的:

  • 我保存了一个文件在项目中没有任何变化,它似乎给给予相同的“肮脏”警告与相同的指纹计算。
  • 我检查了我的PKG_CONFIG_PATH在终端和build.rs文件,他们是相同的。
  • 我关闭了vscode并完全从终端运行。这 * 确实 * 似乎停止了重新编译。我猜这意味着要么vscoderust-analyser)正在修改PKG_CONFIG_PATH,要么它在启动时没有阅读值(即清除它)。

那么,变化检测是如何工作的呢?到目前为止,我已经追踪到这里,但还没有运气来理解发生了什么。
Rust 1.73.0

rustc 1.73.0 (cc66ad468 2023-10-03)

yc0p9oo0

yc0p9oo01#

我也遇到过类似的问题,大量依赖被不必要地重新编译。对我来说,当我在vscode中禁用rust-analyzer时,它被修复了,但这并不理想。
对我来说,一个更好的解决方案是从命令菜单中运行任务rust: cargo run(与单击主fn上方的运行按钮相同)。
您也可以为此创建一个快捷方式:

{
    "key": "ctrl+[Backslash] r",
    "command": "workbench.action.tasks.runTask",
    "args": "rust: cargo run"
}

字符串

相关问题