2 个不稳定版本

0.2.0 2020年6月20日
0.1.0 2020年6月14日

#11 in #construct

MIT/Apache

20KB
493

bygge - 构建您的项目。

如果您可以在没有Cargo[^1]的情况下构建Rust项目会怎么样?Bygge可以做到。

bygge [v]. (丹麦语,挪威语Bokmål)

  1. 构建,构建,
  2. 制作

(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-APACHELICENSE-MIT

依赖项

~4.5–6MB
~127K SLoC