2.5 KiB
2.5 KiB
yps-quickjs
QuickJS JavaScript 引擎的跨平台静态/动态库封装,用于集成到 GUI 项目中。
概述
ypqjs 是基于 QuickJS-ng 的轻量级 JavaScript 引擎库,支持 Windows 和 Linux 平台。
特性
- 跨平台支持(Windows/Linux)
- 可编译为静态库或动态库
- 包含标准 C 库扩展(可选)
- C11 标准
- 完整的 ECMAScript 支持
构建
前置要求
- CMake 3.10 或更高版本
- C 编译器(支持 C11):GCC、Clang、MSVC 等
Windows 构建
cd yps-quickjs
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
Linux 构建
cd yps-quickjs
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
构建选项
YPQJS_BUILD_SHARED_LIBS=ON- 构建动态库(默认:静态库)YPQJS_ENABLE_LIBC=ON- 启用标准 C 库扩展(默认:启用)
示例:
cmake .. -DYPQJS_BUILD_SHARED_LIBS=ON -DYPQJS_ENABLE_LIBC=ON
Debug 构建
cmake .. -DCMAKE_BUILD_TYPE=Debug
集成到你的项目
使用 CMake
在你的项目的 CMakeLists.txt 中添加:
# 查找 yps-quickjs
find_package(ypqjs REQUIRED)
# 链接到你的目标
target_link_libraries(your_target PRIVATE ypqjs)
# 如果需要标准 C 库扩展
target_compile_definitions(your_target PRIVATE YPQJS_ENABLE_LIBC)
使用静态库
# 直接包含源码
add_subdirectory(path/to/yps-quickjs)
# 链接
target_link_libraries(your_target PRIVATE ypqjs)
使用动态库
安装后:
find_package(ypqjs REQUIRED)
target_link_libraries(your_target PRIVATE ypqjs)
API 使用示例
#include "quickjs.h"
#include "quickjs-libc.h"
int main() {
// 创建运行时
JSRuntime *rt = JS_NewRuntime();
// 创建上下文
JSContext *ctx = JS_NewContext(rt);
// 初始化标准模块
js_init_module_std(ctx, "std");
js_init_module_os(ctx, "os");
// 执行 JavaScript 代码
const char *code = "console.log('Hello from yps-quickjs!');";
JSValue result = JS_Eval(ctx, code, strlen(code), "<eval>", JS_EVAL_TYPE_GLOBAL);
// 清理
JS_FreeValue(ctx, result);
JS_FreeContext(ctx);
JS_FreeRuntime(rt);
return 0;
}
头文件
quickjs.h- 核心 JavaScript 引擎 APIquickjs-libc.h- 标准 C 库扩展 API(可选)
许可证
MIT License - 详见 LICENSE 文件
原项目
基于 QuickJS-ng 项目开发。