#binary #binary-file #compile-time #byte #file #include #build-time

构建 include-blob

在不产生编译时间成本的情况下将大二进制文件包含在应用程序中

6个版本 (1个稳定版)

1.0.0 2024年4月19日
0.1.5 2024年4月18日
0.1.4 2023年11月7日
0.1.3 2023年6月4日
0.1.1 2023年1月24日

#336构建工具

每月下载量 31次

0BSD 许可证

10KB
154

include-blob

include-blob 是一个小型crate,它提供了一个替代 include_bytes! 的宏,当与大型文件(几个MB)一起使用时,不会对编译时间产生相同严重的影响。

它通过预处理要包含在构建脚本中的文件,将它们打包到静态库中,并告诉Cargo链接到它们来实现。


lib.rs:

在不产生高编译时间成本的情况下包含大文件。

此crate提供 include_blob! 宏作为标准 include_bytes! 宏的替代品,该宏通过将文件复制到目标文件并链接到它来嵌入文件。这可以减少 include_bytes! 的(相当高)编译时间成本。

为了使这成为可能,用户代码必须首先添加一个调用 make_includable 函数的构建脚本。

// build.rs
fn main() {
    include_blob::make_includable("../../directory-with-big-files");
}
let bytes: &[u8] = include_blob::include_blob!("test-project/blobs/file.txt");

依赖项

~3MB
~58K SLoC