You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cargo_toml与embuild版本不匹配的问题解决方案咨询

解决Cargo版本依赖冲突问题

问题现象

执行cargo build时触发版本依赖错误,具体报错如下:

Running `cargo build --bin=thingspeak-example --package=thingspeak-example --message-format=json --color=always`...
    Updating crates.io index
error: failed to select a version for the requirement `cargo_toml = "^0.12"`
candidate versions found which didn't match: 0.20.5, 0.20.4, 0.20.3, ...
location searched: crates.io index
required by package `embuild v0.30.4`
    ... which satisfies dependency `embuild = "^0.30.4"` of package `esp-idf-sys v0.31.10`
    ... which satisfies dependency `esp-idf-sys = "=0.31.10"` of package `thingspeak-example v0.1.0 (/home/jteiland/thingspeak-example)`
if you are looking for the prerelease package it needs to be specified explicitly
    cargo_toml = { version = "0.19.0-beta.1" }
Error: Cargo invocation failed.
        at t.Cargo.getCargoArtifacts (/home/jteiland/.vscode-server/extensions/vadimcn.vscode-lldb-1.11.1/extension.js:1:10993)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at async Object.open (/home/jteiland/.vscode-server/extensions/vadimcn.vscode-lldb-1.11.1/extension.js:1:9296)
Caused by: Error: exit code: 101.
        at ChildProcess.<anonymous> (/home/jteiland/.vscode-server/extensions/vadimcn.vscode-lldb-1.11.1/extension.js:1:12660)
        at ChildProcess.emit (node:events:519:28)
        at maybeClose (node:internal/child_process:1105:16)
        at ChildProcess._handle.onexit (node:internal/child_process:305:5)

当前使用的Cargo.toml内容如下:

[package]
name = "thingspeak-example"
version = "0.1.0"
authors = ["Sergio Gasquez <sergio.gasquez@gmail.com>"]
edition = "2021"
resolver = "2"

[profile.release]
opt-level = "s"

[profile.dev]
debug = true    # Symbols are nice and they don't increase the size on Flash
opt-level = "z"

[features]
pio = ["esp-idf-sys/pio"]

[dependencies]
esp-idf-hal = "=0.38"
esp-idf-sys = { version = "=0.31.10", features = ["binstart"] }
esp-idf-svc = { version = "=0.42.5", features = ["experimental", "alloc"] }
embedded-svc = "=0.22"
anyhow = "1.0"
toml-cfg = "0.1"
log = "0.4.17"
# serde_json = "1.0.85"
serde = "1.0.144"
shared-bus = "0.2.4"
shtcx = "0.10.0"
cargo_toml = { version = "0.19.0-beta.1" }

[build-dependencies]
embuild = "0.30"
anyhow = "1"

问题原因

报错核心是依赖版本冲突:esp-idf-sys v0.31.10依赖的embuild v0.30.4要求cargo_toml ^0.12,但你显式指定了cargo_toml 0.19.0-beta.1,两个版本范围没有交集,导致Cargo无法解析出兼容版本。

解决方案

方案1:降低cargo_toml版本(推荐,无需改动ESP生态依赖)

将Cargo.toml中[dependencies]下的cargo_toml条目改为0.12.x系列的稳定版本,比如最新的0.12.1:

cargo_toml = "0.12.1"

修改后执行cargo build即可解决冲突。

方案2:升级embuild及ESP生态依赖

如果需要保留cargo_toml 0.19.0-beta.1,则需要升级embuild到支持该版本的版本(需查看embuild版本日志确认兼容版本),同时同步升级esp-idf-sys、esp-idf-hal、esp-idf-svc等依赖到匹配版本,确保整个ESP生态链版本兼容。例如:

# 修改build-dependencies
embuild = "0.31"

# 同步升级ESP相关依赖到兼容版本(示例版本需根据实际兼容情况调整)
esp-idf-sys = { version = "=0.32.0", features = ["binstart"] }
esp-idf-hal = "=0.39"
esp-idf-svc = { version = "=0.43.0", features = ["experimental", "alloc"] }

内容的提问来源于stack exchange,提问作者Jutta Eilander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:47:24