5 个版本
使用旧的 Rust 2015
0.1.4 | 2016年10月6日 |
---|---|
0.1.3 | 2016年8月12日 |
0.1.2 | 2016年7月26日 |
0.1.1 | 2016年7月21日 |
0.1.0 | 2016年7月21日 |
#666 在 Cargo 插件
25 每月下载量
用于 erlang_nif-sys
17KB
345 行
cargo-erlangapp
cargo-erlangapp 是一个 Cargo 子命令,用于构建嵌入 Erlang 应用程序中的 Rust 包。所有位于 crates
目录中的包都会被编译,并放置到 priv/crates
中。以下是一个示例,其中两个包的工件被放置到 priv/crates
myapp/
Makefile
ebin/
src/
crates/
foo_nif/
Cargo.toml
...
bar_port/
Cargo.toml
...
priv/
crates/
foo_nif/
libfoo_nif.so
bar_port/
bar_port
cargo-erlangapp 旨在被 Erlang 构建系统如 erlang.mk
和 rebar3
自动安装和使用,但也可以手动使用。
Erlang 应用程序 find_crate
帮助在 priv/crates
中定位 Rust 工件。
安装
cargo install cargo-erlangapp
用法
Usage:
cargo-erlangapp build [cargo rustc args]
cargo-erlangapp clean [cargo clean args]
cargo-erlangapp test [cargo test args]
内部原理
cargo-erlangapp
在为 Erlang 编译 Rust 代码时处理了一些细节
- OS X 在编译为 Erlang 的 dylib(即 NIF 模块)时需要特殊的链接标志。为了做到这一点,
cargo-erlangapp
必须读取 JSON 清单以识别所有目标并单独编译每个目标,并对 dylib 应用特殊的标志。 - 在 OS X 上,Erlang dylib 加载器需要与 Rust 产生的文件名不同的文件。
依赖项
~1.5MB
~28K SLoC