#resources #run-time #file #system #access #directory

erfs-rt

嵌入式资源文件系统(C/Rust):访问嵌入式资源的运行时 API

2 个版本

0.1.2 2020年2月23日
0.1.1 2020年2月10日
0.1.0 2020年2月10日

#1201 in 文件系统

每月 21 次下载

MIT/Apache

14KB
316

嵌入式资源文件系统 (C/Rust)

此项目允许使用 C/C++ 或 Rust 编写的应用程序将所需的资源文件嵌入到可执行二进制文件中。

有两个组件

  • 一个名为 erfs_gen 的命令行工具可以遍历资源目录并生成应该添加到您的项目中的 .c/.h 源文件。
  • 一个纯 C 或 Rust lib crate 运行时库,用于访问资源的内容。

使用方法

命令行界面

使用方法如下所述

$./erfs-gen
Usage: ./erfs-gen [options] <src_dir> <id> <dest_dir>
Options:
  --gzip      compress file if needed.
  --rust      generate rust binding codes.

where,
<src_dir>: point to the top level directory contains resources.
<id>: the identity of the resource file system, and a executable may have multiple ERFS instances.
<dest_dir>: to specify where the source files are generated. 

C 开发者

代码生成

一个有用的 cmake 函数可以在构建时生成文件。

function(gen_erfs_source sourcedir id target)
    add_custom_command(
        OUTPUT ${target}/erfs_${id}.c ${target}/erfs_${id}.h
        COMMAND ${ERFS_GEN} --gzip --rust ${sourcedir} ${id} ${target}
        COMMENT "Generating ERFS source file from: ${sourcedir}"
    )
endfunction()

gen_erfs_source("${CMAKE_CURRENT_SOURCE_DIR}/erfs-rt" "rfsrc" "${CMAKE_CURRENT_BINARY_DIR}")

请参阅 CMakeList.txt 了解详情。

C API

请参阅头文件 (erfs-rt/src/resource_fs.h) 和单元测试示例 (erfs-rt/tests/erfs_test.cpp) 了解详情。

Rust 开发者

Rust 代码生成

需要 build.rs 来生成 .c/.h/.rs 文件并编译 C 文件。请参阅 erfs-example/build.rs 了解详情。

Rust API

请参阅 Rust 包装器 (erfs-rt/src/lib.rs) 和单元测试示例 (erfs-example/src/main.rs) 了解详情。

待办事项

  • 符号/硬链接支持
  • 运行时库和代码生成器的纯 Rust 实现。

无运行时依赖

~0–2.3MB
~44K SLoC