rustunit

主要观点:介绍如何调试因依赖项中启用与构建目标不兼容的功能而导致的最近构建中断,以 wasm 为例。
关键信息:

  • 移植基于 bevy 的游戏 tinytakeoff 到 Bevy 0.15 后,wasm 构建出错,是因basis-universal crate 中代码依赖stdlib.h在 wasm 上不工作。
  • 通过cargo tree工具找到basis-universalbevy_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功能。
阅读 8
0 条评论