2 个稳定版本
1.3.1 | 2022年6月7日 |
---|---|
1.3.0 | 2022年6月5日 |
#1755 在 文本处理
用于 rosie
480KB
12K SLoC
rosie-sys 概述
此包构建或链接 librosie
库,用于 Rosie 匹配引擎和 Rosie 模式语言(rpl
)。
希望在使用 Rust 中使用 Rosie 的大多数用户可能应该使用 rosie 包。
构建与链接 librosie 的比较
此包可以从源代码构建 librosie
或链接到现有库。
从源代码构建
要构建 librosie,请在 [dependencies]
部分指定 build_static_librosie
功能。
rosie-sys= {features= ["build_static_librosie"] }
将 rosie 作为 C / FFI 依赖项构建
如果您使用此包构建另一个 C
(非 Rust) 项目的依赖项,则可以使用 DEP_ROSIE_INCLUDE
环境变量从 Cargo 构建脚本访问 rosie 头文件。此外,构建的 librosie
库的位置将由 DEP_ROSIE_LIB
环境变量指定。
安装与部署
Rosie 依赖于一个 rosie_home
目录,其中包含包括标准模式库在内的支持文件。此包生成所需的文件,可以从构建 out
目录或从由 ROSIE_HOME
环境变量指定的位置获得,该环境变量可通过 Cargo 构建脚本访问。
在部署使用Rosie的应用程序时,您必须确保这些文件安装在了目标机器的某个位置。在类Unix系统中,规范位置是:/usr/local/lib/rosie/
,尽管您也可以将它们安装在其他位置。例如,它们可以放置在您的应用程序目录中或在Mac OS X .app
包目录中。
如果文件安装在非标准位置,您必须通过调用[rosie_home_init]初始化Rosie。或者,如果您正在使用高级rosie
crate,请调用Rosie::set_rosie_home_path()
。
链接到共享Rosie库
要将系统上已安装的共享librosie链接到您的应用程序中,请在您的Cargo.toml
文件中的[dependencies]
部分添加以下内容:
rosie-sys= {features= ["link_shared_librosie"] }
在Cargo之外获取Rosie
有关获取和构建Rosie的完整信息,请参阅此处。然而,Rosie也可能通过您选择的包管理器提供。例如,如果您的操作系统支持,您可以运行以下命令之一
dnf install rosie
brewinstall rosie
或者,如果您愿意通过Makefile安装Rosie,请参阅此处。
注意:此crate已针对librosie
版本1.3.0
进行测试,尽管它可能与其他版本兼容。
更新此crate中的Rosie源代码
此crate中的许多文件是从主Rosie源或构建产品中复制的。
以下是刷新源文件的脚本。这假设rosie-sys
项目已作为rosie
主项目的同级项目检出,并且Rosie项目已成功构建,这会拉取子模块并创建rosie_home
输出文件。
cp -r rosie/src/librosie rosie-sys/src/librosie
cp -r rosie/src/rpeg/compiler rosie-sys/rpeg/compiler
cp -r rosie/src/rpeg/include rosie-sys/rpeg/include
cp -r rosie/src/rpeg/runtime rosie-sys/rpeg/runtime
cp -r rosie/submodules/lua-cjson rosie-sys/src/lua-cjson
cp rosie/build/lib/rosie/CHANGELOG rosie-sys/src/rosie_home/CHANGELOG
cp rosie/build/lib/rosie/CONTRIBUTORS rosie-sys/src/rosie_home/CONTRIBUTORS
cp rosie/build/lib/rosie/LICENSE rosie-sys/src/rosie_home/LICENSE
cp rosie/build/lib/rosie/README rosie-sys/src/rosie_home/README
cp rosie/build/lib/rosie/VERSION rosie-sys/src/rosie_home/VERSION
cp -r rosie/build/lib/rosie/lib rosie-sys/src/rosie_home/lib
cp -r rosie/build/lib/rosie/rpl rosie-sys/src/rosie_home/rpl
注意 lua-cjson文件有一些更改,以消除一些不会向上传播的警告。由于它不太可能发生变化,也许可以跳过从上游获取lua-cjson。
依赖关系
~0–1.5MB
~20K SLoC