5 个版本
0.0.3 | 2023 年 2 月 2 日 |
---|---|
0.0.2 | 2023 年 2 月 1 日 |
0.0.1 | 2023 年 1 月 31 日 |
0.0.0-alpha0.2 | 2023 年 1 月 31 日 |
0.0.0-alpha0.1 | 2023 年 1 月 30 日 |
在 构建工具 中排名 396
每月下载 27 次
用于 zsling
12KB
252 行
Zigc 旨在为将 Zig 库编译到您的 Rust 项目提供基本功能。
免责声明
zig 是编译此crate中的 .zig
文件所必需的。
用法
以下是一个示例函数定义
// main.zig
const std = @import("std");
export fn add(a: c_int, b: c_int) callconv(.C) c_int {
return a + b;
}
- 导入
zigc
和libc
crate
[dependencies]
libc = "*"
[build-dependencies]
zigc = "*"
- 在您的构建脚本中指定
.zig
源文件,zigc 将自动将其编译到正确的目录,并将工件链接到您的 Rust 二进制文件中。
/* build.rs */
fn main() {
zigc::Build::new()
.file("./src/main.zig")
.finish();
}
- 在您的 Rust 源代码中导入函数。
/* main.rs */
extern crate libc;
use libc::c_int;
#[link(name = "main", kind = "dylib")]
extern "C" {
fn add(a: c_int, b: c_int) -> c_int;
}
fn main() {
let res = unsafe { add(2, 2) };
println!("{res}");
}
- 构建/运行您的 crate。
$ cargo run
4
路线图
- 基本的
.zig
编译 - MVP 将
.so
文件链接到 cargo 项目。 - 添加日志。
- 使用 cargo 的
TARGET
标志自动指定目标。 - 向
Build
添加更多选项- 添加额外的标志(
-cflags
、-target
、-mcpu
等) - 命名输出库文件。
- 指定额外的
include
库
- 添加额外的标志(
- 允许编译和链接静态 Zig 库。
- 能够编译和链接多个
.zig
文件。
贡献
鼓励并感谢您发现的任何问题、功能请求和 pull request! :)
依赖项
~475–770KB
~14K SLoC