#3ds #cargo-command #homebrew #nintendo #devices #wrapper #apps

bin+lib cargo-3ds

Cargo 用于开发任天堂 3DS 家酿应用的包装器

4 个版本

0.1.3 2024 年 5 月 3 日
0.1.2 2023 年 11 月 27 日
0.1.1 2023 年 7 月 29 日
0.1.0 2023 年 7 月 14 日

#128 in Cargo 插件

MIT/Apache

51KB
922

cargo-3ds

cargo-3ds 命令,用于处理任天堂 3DS 项目二进制文件。基于 cargo-psp。

安装

要安装最新版本,请访问 https://crates.io

cargo install --locked cargo-3ds

要安装 cargo-3ds 的当前 master 版本

cargo install --locked --git https://github.com/rust3ds/cargo-3ds

使用方法

使用夜间工具链构建 3DS 应用程序(通过在项目目录中使用 rustup override nightly 或者在 cargo 调用中添加 +nightly)。

Commands:
  build
          Builds an executable suitable to run on a 3DS (3dsx)
  run
          Builds an executable and sends it to a device with `3dslink`
  test
          Builds a test executable and sends it to a device with `3dslink`
  new
          Sets up a new cargo project suitable to run on a 3DS
  help
          Print this message or the help of the given subcommand(s)

Options:
  -h, --help
          Print help information (use `-h` for a summary)

  -V, --version
          Print version information

其他参数将通过子命令传递。有关更多详细信息,请参阅 传递参数

还可以传递任何其他 cargo 命令(例如 doccheck),所有参数将直接传递给 cargo,无需修改,并设置正确的 --target armv6k-nintendo-3ds

基本示例

  • cargo 3ds build
  • cargo 3ds check--详细模式
  • cargo 3ds run--发布版--example foo
  • cargo 3ds test---运行
  • cargo 3ds new my-新建-项目--版本2021

运行可执行文件

cargo 3ds testcargo 3ds run 使用 3dslink 工具将构建的可执行文件发送到设备,因此接受与 3dslink 相对应的具体相关参数。

-a, --address <ADDRESS>
      Specify the IP address of the device to send the executable to.

      Corresponds to 3dslink's `--address` arg, which defaults to automatically finding the device.

-0, --argv0 <ARGV0>
      Set the 0th argument of the executable when running it. Corresponds to 3dslink's `--argv0` argument

-s, --server
      Start the 3dslink server after sending the executable. Corresponds to 3dslink's `--server` argument

  --retries <RETRIES>
      Set the number of tries when connecting to the device to send the executable. Corresponds to 3dslink's `--retries` argument

传递参数

由于cargo-3dscargo3dslink解析参数的方式,在带有参数调用可执行文件时,不幸地需要一些复杂性。

所有以短横线开头的未识别参数(例如--release--features等)将直接传递给cargo

注意:运行可执行文件的参数必须在其他未识别的cargo参数之前指定。否则,它们将被视为传递参数,这可能会导致最终的cargo命令失败。

可以使用可选的--显式地将后续参数传递给cargo,包括传递给可执行文件的参数。为了将cargo参数与可执行文件参数分开,可以使用另一个--。例如

  • cargo 3ds run-- --xyz

    构建一个可执行文件并将其发送到设备以运行,使用参数xyz

  • cargo 3ds test--地址192.168.0.2 -- -- --测试-参数1

    构建一个测试可执行文件,并尝试将其发送到地址为192.168.0.2的设备上,并使用参数["--test-arg", "1"]运行它。

  • cargo 3ds test--地址192.168.0.2 --详细模式-- --测试-参数1

    使用cargo test --verbose构建一个测试可执行文件,并尝试将其发送到地址为192.168.0.2的设备上,并使用参数["--test-arg", "1"]运行它。

    这是因为--verbose开始于cargo参数的集合,并以3DS特定参数的集合结束,因此不需要两个--实例。

注意事项

由于3dslink一次只能发送一个可执行文件,默认情况下,将只使用“最后一个”构建的可执行文件。如果testrun命令构建了多个二进制文件,您可能需要过滤它才能运行您想要的可执行文件。

文档测试工作得不错,但cargo-3ds使用了一些不稳定的cargo和rustdoc功能来使其工作,因此输出不会那么美观,并且需要一些手动解决方法才能实际运行测试并查看其输出。目前,cargo 3ds test --doc不会构建3dsx文件或使用3dslink

许可协议

本项目根据MIT许可协议或Apache-2.0许可协议进行分发。

依赖关系

~4-13MB
~158K SLoC