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 |
|
#23 in Cargo插件
301 每月下载
635KB
15K SLoC
Playdate应用程序的构建系统
Cargo-playdate 是一个跨平台插件,可以用于构建用Rust编写的 Playdate手持游戏机 程序。它也可以作为独立工具使用。
它可以构建用Rust编写的程序,管理资源,为Playdate构建包并在模拟器或设备上运行。通常它为模拟器和硬件构建静态或动态库,但也可以为硬件构建可执行二进制文件,这种方法可以产生高度优化的输出,同时大幅减小大小(归功于DCE & LTO)。
* 对于可执行二进制文件,使用 --no-gcc
参数,该参数需要设置替代链接最终二进制文件。
平台特定预置安装说明
MacOS
- 安装 PlaydateSDK(默认安装在
~/Developer/PlaydateSDK
) - 设置 PLAYDATE_SDK_PATH 环境变量:
export PLAYDATE_SDK_PATH="$HOME/Developer/PlaydateSDK"
- 安装 cmake:
brew install cmake
- 安装 rust nightly:
rustup toolchain install nightly
- Arm 工具链包含在 PlaydateSDK 中。
Ubuntu Linux
- 安装 PlaydateSDK - 记住你提取了它的位置。
- 设置 PLAYDATE_SDK_PATH 环境变量:
export PLAYDATE_SDK_PATH="/path/to/PlaydateSDK-2.x.x/"
- 安装cmake:
sudo apt-get install cmake
- 安装 rust nightly:
rustup toolchain install nightly
- 安装arm工具链:
sudo apt-get install gcc-arm-none-eabi
- 安装libudev:
sudo apt-get install libudev-dev
Windows
- 安装PlaydateSDK(默认安装到
~/Documents/PlaydateSDK
) - 设置PLAYDATE_SDK_PATH
- 按windows+r,运行:
sysdm.cpl
- 高级选项卡 -> 环境变量 -> 新建
- 变量名称:
PLAYDATE_SDK_PATH
- 变量值:
C:\Users\username\Documents\PlaydateSDK
- 按windows+r,运行:
- 安装CMake: cmake下载
- 安装 rust nightly:
rustup toolchain install nightly
- 安装arm工具链: arm gnu工具链下载。文件名将类似于 'arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.exe'。
- 将arm工具链和cmake添加到PATH环境变量
- 按windows+r,运行:
sysdm.cpl
- 高级选项卡 -> 环境变量。
- 找到
Path
并点击编辑
- 点击
新建
并添加C:\Program Files\CMake\bin
- 点击
新建
并添加C:\Program Files (x86)\Arm GNU Toolchain arm-none-eabi\13.2 Rel1\bin
- 按windows+r,运行:
另请参阅: 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
使用new
或init
命令生成新项目。
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_LOG
与CARGO_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的自动目标,如bin
和example
,但仅限于二进制可执行目标,忽略#![crate_type = "lib"]
属性。因此,如果您想将example
目标作为lib
构建,这需要在模拟器中运行,您可以在包清单中声明它,如下所示
否则,[[example]] name = "demo" crate-type = ["dylib", "staticlib"] path = "examples/demo.rs"
example
将会被构建为bin
并仅能在设备上运行。在未来版本中,可能会通过添加对rustc
命令的支持来修复此问题,就像添加cargo rustc
到设置--crate-type
一样。
- 特别为
example
定制的 cargo-targets 继承自包资产。目前尚无方法为单个 cargo-target 设置资产,只能为整个包 以及 dev-targets - 有一个由包资产继承的额外表dev-assets
。
故障排除
本软件不受 Panic 的赞助或支持。
依赖项
~88–120MB
~2.5M SLoC