主要观点:介绍如何调试因依赖项中启用与构建目标不兼容的功能而导致的最近构建中断,以 wasm 为例。
关键信息:
- 移植基于 bevy 的游戏 tinytakeoff 到 Bevy 0.15 后,wasm 构建出错,是因
basis-universal
crate 中代码依赖stdlib.h
在 wasm 上不工作。 - 通过
cargo tree
工具找到basis-universal
被bevy_image
使用,而自身Cargo.toml
未启用该功能,进一步通过cargo tree -e features
找到是bevy_libgdx_atlas
启用了basis-universal
导致构建中断,这是 Bevy 0.15 的已知问题,有更干净的解决办法。 - 提出改进 ergonomics 的方法,如使用
cargo tree -e features -p bevy --invert
,还提出希望有类似cargo deny
的工具、cargo tree
生成计算机可读格式以及cargo tree-tui
的愿望。
重要细节: - 错误信息为
cargo:warning=In file included from vendor/basis_universal/encoder/pvpngreader.cpp:14: vendor/basis_universal/encoder/../transcoder/basisu.h:53:10: fatal error: 'stdlib.h' file not found
。 - 在 Bevy 迁移指南中提到
basis-universal
的一处地方。 cargo tree
工具可分析依赖树及各 crate 启用的功能。- 找到的解决办法是在
bevy_internal
中启用bevy_image
功能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。