2 个版本
0.1.2 | 2020年2月23日 |
---|---|
0.1.1 | 2020年2月10日 |
0.1.0 |
|
#1289 in 文件系统
27KB
674 代码行
嵌入式资源文件系统 (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
) 和 UT 示例(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
) 和 UT 示例(erfs-example/src/main.rs
) 获取详细信息。
待办事项
- 支持符号/硬链接
- 运行时库和代码生成器的纯 Rust 实现。
依赖项
~0.3–2.6MB
~50K SLoC