61 个版本

0.5.5 2024年8月12日
0.5.3 2024年7月17日
0.3.16 2024年3月21日
0.3.12 2023年11月21日
0.0.0 2023年6月26日

#23 in Cargo插件

Download history 239/week @ 2024-05-02 478/week @ 2024-05-09 143/week @ 2024-05-16 22/week @ 2024-05-23 68/week @ 2024-05-30 261/week @ 2024-06-06 511/week @ 2024-06-13 93/week @ 2024-06-20 1/week @ 2024-06-27 2/week @ 2024-07-04 266/week @ 2024-07-11 100/week @ 2024-07-18 13/week @ 2024-07-25 230/week @ 2024-08-08 54/week @ 2024-08-15

301 每月下载

MIT/Apache

635KB
15K SLoC

Playdate应用程序的构建系统

Cargo-playdate 是一个跨平台插件,可以用于构建用Rust编写的 Playdate手持游戏机 程序。它也可以作为独立工具使用。

它可以构建用Rust编写的程序,管理资源,为Playdate构建包并在模拟器或设备上运行。通常它为模拟器和硬件构建静态或动态库,但也可以为硬件构建可执行二进制文件,这种方法可以产生高度优化的输出,同时大幅减小大小(归功于DCE & LTO)。

* 对于可执行二进制文件,使用 --no-gcc 参数,该参数需要设置替代链接最终二进制文件。

平台特定预置安装说明

MacOS

  1. 安装 PlaydateSDK(默认安装在 ~/Developer/PlaydateSDK
  2. 设置 PLAYDATE_SDK_PATH 环境变量: export PLAYDATE_SDK_PATH="$HOME/Developer/PlaydateSDK"
  3. 安装 cmake: brew install cmake
  4. 安装 rust nightly: rustup toolchain install nightly
  5. Arm 工具链包含在 PlaydateSDK 中。

Ubuntu Linux

  1. 安装 PlaydateSDK - 记住你提取了它的位置。
  2. 设置 PLAYDATE_SDK_PATH 环境变量: export PLAYDATE_SDK_PATH="/path/to/PlaydateSDK-2.x.x/"
  3. 安装cmake: sudo apt-get install cmake
  4. 安装 rust nightly: rustup toolchain install nightly
  5. 安装arm工具链: sudo apt-get install gcc-arm-none-eabi
  6. 安装libudev: sudo apt-get install libudev-dev

Windows

  1. 安装PlaydateSDK(默认安装到~/Documents/PlaydateSDK
  2. 设置PLAYDATE_SDK_PATH
    1. 按windows+r,运行: sysdm.cpl
    2. 高级选项卡 -> 环境变量 -> 新建
    3. 变量名称: PLAYDATE_SDK_PATH
    4. 变量值: C:\Users\username\Documents\PlaydateSDK
  3. 安装CMake: cmake下载
  4. 安装 rust nightly: rustup toolchain install nightly
  5. 安装arm工具链: arm gnu工具链下载。文件名将类似于 'arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.exe'。
  6. 将arm工具链和cmake添加到PATH环境变量
    1. 按windows+r,运行: sysdm.cpl
    2. 高级选项卡 -> 环境变量。
    3. 找到Path并点击编辑
    4. 点击新建并添加C:\Program Files\CMake\bin
    5. 点击新建并添加C:\Program Files (x86)\Arm GNU Toolchain arm-none-eabi\13.2 Rel1\bin

另请参阅: Inside Playdate with C: Prerequisites

Cargo-Playdate安装

cargo +nightly install cargo-playdate
cargo +nightly playdate --version

或者安装使用本地git克隆的尖端功能

cargo +nightly install cargo-playdate --git=https://github.com/boozook/playdate.git

Hello World

使用newinit命令生成新项目。

mkdir -p ~/code/pd-hello/
cd ~/code/pd-hello/
cargo +nightly playdate init --lib --full-metadata --deps="playdate"
cargo +nightly playdate run

注意,此命令有更多选项,例如--deps="sys:git, controls:git"。运行cargo playdate new --help以获取更多信息。

将创建新的包。

查看包清单文件(Cargo.toml)。

Playdate包有额外的元数据。

有关元数据的更多信息,请参阅文档

配置

没有其他配置,只是继承自cargo和某些特殊环境变量。

  • CARGO_PLAYDATE_LOGCARGO_LOG或默认的RUST_LOG作用相同。还有CARGO_PLAYDATE_LOG_STYLE
  • PLAYDATE_SDK_PATH指向SDK根目录
  • ARM_GCC_PATH指向arm-none-eabi-gcc可执行文件。

运行cargo playdate -h获取更多详细信息,或者使用--help获取更多信息。

限制

  • cargo-playdate支持cargo的自动目标,如binexample,但仅限于二进制可执行目标,忽略#![crate_type = "lib"]属性。因此,如果您想将example目标作为lib构建,这需要在模拟器中运行,您可以在包清单中声明它,如下所示
    [[example]]
    name = "demo"
    crate-type = ["dylib", "staticlib"]
    path = "examples/demo.rs"
    
    否则,example 将会被构建为 bin 并仅能在设备上运行。在未来版本中,可能会通过添加对 rustc 命令的支持来修复此问题,就像添加 cargo rustc 到设置 --crate-type 一样。

故障排除

  • 在任何操作系统上,如果硬件因权限不足而无法弹出,则可能是因为环境受限。尝试给予权限和/或使用具有功能 ejectcargo-playdate 构建。

  • 欢迎加入 讨论问题


本软件不受 Panic 的赞助或支持。

依赖项

~88–120MB
~2.5M SLoC