我制作了一个Rust CLI工具,希望向用户提供下载说明。
这个工具可以让你运行convert <some args>
这样的命令,也可以让你在不同基数的数字之间进行转换,这里的关键是我试图让你全局运行带有关键字convert
的命令,而不是让用户必须在项目目录中运行cargo run <args>
或./main <args>
。
我的Cargo.toml
如下所示:
[package]
name = "converter_cli"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
[[bin]]
name = "convert"
path = "src/main.rs"
目前,经过一番研究,我已经写了这些指令,工作我的电脑(Mac M1):
1.请确保您的系统上安装了Rust。如果没有,请use this link。
1.克隆存储库:git clone https://github.com/mattrltrent/base_converter
.
1.在项目目录中,运行cargo build --release
。
1.在项目目录中,运行cargo install --path .
(不要错过结尾的.
)。
1.现在应该可以全局运行该工具了,为了确保这一点,请检查是否可以运行convert version
。
然而,我已经在Windows PC上运行了这些指令,当尝试运行convert <args>
时,我得到了错误“无效的驱动器规格”。
有没有更好的方法可以统一地在Linux、Windows和MacOS上发布(而不将其发布为Cargo crate)?如果没有,为什么这些说明不适用于Windows?
如果相关,我的文件结构如下:
assets
-> <random image assets>
src
-> conversions.rs
-> errors.rs
-> main.rs
target
.gitignore
Cargo.lock
Cargo.toml
README.md
1条答案
按热度按时间nszi6y051#
命名问题
这个名字被系统内置的:
convert
已经是有效命令:将磁盘从一种类型转换为另一种类型。
以下是一些解决方案:
1.通过完整路径引用应用程序 (很难看,但应该可以)
1.在Windows上为应用程序指定别名
1.将应用程序重命名为更唯一的名称
分发
分发是一个很大的主题。
想想你通常是如何安装新软件的。行为不仅与人不同,而且与所使用的操作系统、用户限制(管理员权限)等不同。
提供已编译的程序
(as@PaulDempsey已经建议过了)(一般来说大多数人都习惯了)
哪里
怎么样
*.exe
)将软件包添加到软件包管理器存储库
有一堆包管理器要考虑,有不同的方法来获得自己的应用程序在那里,但有例如:
他们中的一些人可能会为您编译一些东西,其他人可能只是随附可执行文件。
将步骤转换为安装脚本
你的大多数步骤可以很容易地转换成shell和/或批处理脚本,这样用户就可以简单地运行
install.sh
,一切都很好,这样你就可以自动区分不同系统上的行为。