2 个不稳定版本
0.2.0 | 2020年6月20日 |
---|---|
0.1.0 | 2020年6月14日 |
#11 in #construct
20KB
493 行
bygge - 构建您的项目。
如果您可以在没有Cargo[^1]的情况下构建Rust项目会怎么样?Bygge可以做到。
bygge [v]. (丹麦语,挪威语Bokmål)
- 构建,构建,
- 制作
(via 维基词典)
[^1]: bygge
仍然需要Cargo来获取依赖项。
为什么?
我想了解Cargo所做的一切工作,而无需分析Cargo本身。我跟踪了cargo build --verbose
的输出,并将其转换为简单的构建指令。
此外,我还阅读了有关构建系统,如Ninja的内容,并对重新构建它很感兴趣。我还没有这么做,但至少我在使用Ninja。
它能做什么
bygge create
生成一个Ninja构建配置(默认为build.ninja
),列出二进制crate所依赖的所有目标,包括所有crate依赖项。ninja
然后可以使用此配置来组装最终的二进制文件。结果应该与执行cargo build
的输出相同。
它不能做什么
bygge
永远不会是Cargo的替代品。
Cargo是一个完整的构建系统,了解不同的构建目标,允许为每个依赖项启用功能,轻松地交叉编译到不同的目标,并运行构建的程序以及测试和生成文档。
bygge
... 构建。
功能
- 构建自身
- 构建项目Cargo.toml中列出的cargo依赖项
- 只能构建具有单个二进制目标的crate
- 在macOS和Linux(至少)上运行
- 不支持
build.rs
文件 - 不支持链接非Rust库
需求
构建bygge
bygge
可以创建一个Ninja构建配置来构建自身。但首先您需要一个编译好的bygge
。使用捆绑的预生成配置来完成此操作
ninja -f manual.ninja
然后创建默认的构建配置并构建
build/bygge create
build/bygge build
许可
Bygge以MIT许可和Apache许可(版本2.0)的条款分发。
有关详细信息,请参阅LICENSE-APACHE和LICENSE-MIT。
依赖项
~4.5–6MB
~127K SLoC