# 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 构建 ```cmd cd yps-quickjs mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release ``` ### Linux 构建 ```bash 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 cmake .. -DYPQJS_BUILD_SHARED_LIBS=ON -DYPQJS_ENABLE_LIBC=ON ``` ### Debug 构建 ```cmake cmake .. -DCMAKE_BUILD_TYPE=Debug ``` ## 集成到你的项目 ### 使用 CMake 在你的项目的 CMakeLists.txt 中添加: ```cmake # 查找 yps-quickjs find_package(ypqjs REQUIRED) # 链接到你的目标 target_link_libraries(your_target PRIVATE ypqjs) # 如果需要标准 C 库扩展 target_compile_definitions(your_target PRIVATE YPQJS_ENABLE_LIBC) ``` ### 使用静态库 ```cmake # 直接包含源码 add_subdirectory(path/to/yps-quickjs) # 链接 target_link_libraries(your_target PRIVATE ypqjs) ``` ### 使用动态库 安装后: ```cmake find_package(ypqjs REQUIRED) target_link_libraries(your_target PRIVATE ypqjs) ``` ## API 使用示例 ```c #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), "", JS_EVAL_TYPE_GLOBAL); // 清理 JS_FreeValue(ctx, result); JS_FreeContext(ctx); JS_FreeRuntime(rt); return 0; } ``` ## 头文件 - `quickjs.h` - 核心 JavaScript 引擎 API - `quickjs-libc.h` - 标准 C 库扩展 API(可选) ## 许可证 MIT License - 详见 LICENSE 文件 ## 原项目 基于 [QuickJS-ng](https://github.com/quickjs-ng/quickjs) 项目开发。