81 个版本

0.7.2 2024年6月17日
0.6.8 2023年9月29日
0.6.4 2023年4月13日
0.6.3 2022年11月18日
0.3.1 2018年3月13日

#129Cargo 插件

Download history 45/week @ 2024-04-26 14/week @ 2024-05-03 14/week @ 2024-05-10 63/week @ 2024-05-17 55/week @ 2024-05-24 102/week @ 2024-05-31 84/week @ 2024-06-07 313/week @ 2024-06-14 84/week @ 2024-06-21 24/week @ 2024-06-28 21/week @ 2024-07-05 28/week @ 2024-07-12 14/week @ 2024-07-19 20/week @ 2024-07-26 15/week @ 2024-08-02 10/week @ 2024-08-09

每月 66 次下载

MIT/Apache

190KB
4.5K SLoC

Dinghy

rustc >= 1.74.0 MIT/Apache 2 Build and test

是什么?

Dinghy 是一个 cargo 扩展,可以将 cargo 工作流程应用于交叉编译场景。

Dinghy 特别适合“小型”基于处理器的设备,如 Android 和 iOS 手机,或小型单板计算机,如 Raspberry Pi。在这些场景中,无法或不可行进行本地编译。

最初,Dinghy 的主要目标是测试和基准测试,但现在在 Snips 我们使用它来交叉编译整个平台。这包括在一个地方设置 ccpkg-config 包。

如果您是 Rust 库的作者,您可以在几分钟内将测试和基准测试运行在您的智能手机上。您应该这样做,至少偶尔一次。

演示

让我们看看 BurntSushi 的 byteorder 在几个 arm 设备、两部智能手机和一个 Raspberry Pi 上的 f32 处理方式。

Demo

哎呀。它工作得很好。

如何?

一旦 Dinghy 知道您的工具链和设备,您就可以在大多数情况下从简单的 cargo 命令中运行测试和基准测试,而无需更改它们。

只需在 cargo 和其子命令之间添加 dinghy -d some_device

cargo dinghy -d my_android test
cargo dinghy -d my_raspberry bench

默认情况下,没有 -d,Dinghy 将执行本地构建,就像 cargo 一样。

入门

根据您的目标和您的工作站,设置 Dinghy 的难易程度可能会有所不同。

  • Android 相对容易,尤其是如果您已经是移动开发者。
  • iOS 的设置有很多步骤,但至少 Apple 提供了你所需的一切。再次提醒,如果你是 iOS 开发者,大部分繁重的工作已经完成。如果你不是,请注意你不需要支付任何费用。
  • 其他远程 SSH 可访问设备 从 Dinghy 的角度来看是最容易的,但你将需要自己获取适合你的设备架构和操作系统的工具链。如果你的设备是运行 raspbian 的 Raspberry Pi,我们可以提供帮助。 :)

高级主题和功能

  • 某些项目需要 资源文件 来运行它们的测试或基准测试。Dinghy 尽力在尽可能多的项目/目标配置中使其工作,但某些项目可能需要一些帮助。
  • 在某些较大的项目中,你可能需要根据你想要测试的平台来 过滤 你项目的成员。
  • 环境变量 传递给你的可执行文件有时可能很有用。
  • Dinghy 提供了一个 覆盖 系统,可以将“东西”添加到你的工具链 sysroot。这允许你在不更改 sysroot 工具链的情况下添加构建依赖项,例如静态库或头文件。
  • dinghy-build crate 为交叉编译提供了某些 build.rs 功能。

仅作为运行器使用 Dinghy

如果你的项目已经为目标平台构建而不需要 Dinghy,而你只想使用 Dinghy 在设备上运行代码,你可以直接使用 Dinghy 的捆绑运行器。你只需要将 Dinghy 注册为 .cargo/config 中的运行器。以下是一个针对所有 Apple 目标示例

[target.'cfg(all(any(target_arch="aarch64",target_arch="x86_64"),target_vendor="apple",any(target_os="ios",target_os="tvos",target_os="apple-watchos")))']
runner = "cargo dinghy runner --"

然后你可以直接运行你的测试,例如使用 cargo test --target aarch64-apple-ios-sim

请注意,推荐使用 Dinghy 作为 cargo 子命令,因为它将为你的项目自动设置很多东西,以便甚至可以构建。

如果未传递(如上述示例所示),运行器将尝试自动检测平台

许可证

以下任一许可证下许可

贡献

除非你明确声明,否则任何你有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证的定义,应作为上述双重许可,不附加任何额外条款或条件。

依赖项

~12–26MB
~344K SLoC