为 Rust 制作的 CLI 工具创建安装程序

问题描述 投票:0回答:1

我制作了一个简单的 CLI 工具,其中包含一些小游戏。它完全是用 Rust 编写的(如果你好奇的话,请参阅这里的存储库)。我一直在使用 Cargo 命令

cargo install --path .
以便能够从我系统上的任何终端(使用 MacOS)使用它。我希望能够在我的 Github 上发布一个版本,以便其他人也可以从他们的终端运行二进制文件。

我以前从未发布过任何项目,并且非常不熟悉发布的工作原理,或者如何为我的二进制文件创建安装程序。根据我的理解,应该可以安装我的应用程序二进制文件和相关的环境变量(?),而无需用户安装 Cargo。我确实记得必须手动摆弄我的环境变量才能使其正常工作。

重要的区别是该工具是在终端内运行,而不是通过打开可执行文件(只需键入

mints <game> <args>
)。有人可以提供有关如何构建正确设置的安装程序的指导/我应该了解有关为这样的 CLI 创建版本的任何信息吗?谢谢!

rust installation deployment environment-variables rust-cargo
1个回答
0
投票

如果我理解正确,听起来您想要的是为多个目标构建并将这些构建提交到其他人可以克隆并运行的存储库中?

这可以通过

cargo build
命令并将不同的值传递给 --target 来完成,例如:

cargo build --target x86_64-apple-darwin
// 为 64 位 macOS 构建

cargo build --release --target x86_64-apple-darwin
// <- or this

添加标志 --release 将输出二进制文件放入

./target/releases/
而不是
./target/debug/

因此,您需要为要支持的每个目标平台构建一个二进制文件,然后您会认为您可以确保文件具有正确的权限:(

chmod 755 ./target/releases/yourbinarysname
)但是这就是它的位置有点棘手,因为
git
不会保留您在您的系统上设置的任何文件权限并将其复制到别人的系统。

因此,您可以制作一个简单的 bash 脚本,设置可执行文件的权限并将文件移动到用户的 PATH 中(通过将其复制到 PATH 环境变量上可用的 bin 目录之一中)。最后,复制后将二进制文件复制到适当的 bin 位置,您可以让 bash 脚本为它们打开您的程序。

这将避免他们安装货物,但需要您做一些额外的工作来检测他们所在的平台并找出将哪个目标构建移动到他们的哪个位置。

旁注:

您还可以在

Cargo.toml
中包含以下行来控制从
cargo build
获取输出的文件名:

[[bin]]
name = "yourcustombinaryname"
path = "src/main.rs"
© www.soinside.com 2019 - 2024. All rights reserved.