Files
quickjs-prj/yps-quickjs/README.md
2026-02-02 12:48:25 +08:00

138 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# yps-quickjs
QuickJS JavaScript 引擎的跨平台静态/动态库封装,用于集成到 GUI 项目中。
## 概述
ypqjs 是基于 QuickJS-ng 的轻量级 JavaScript 引擎库,支持 Windows 和 Linux 平台。
## 特性
- 跨平台支持Windows/Linux
- 可编译为静态库或动态库
- 包含标准 C 库扩展(可选)
- C11 标准
- 完整的 ECMAScript 支持
## 构建
### 前置要求
- CMake 3.10 或更高版本
- C 编译器(支持 C11GCC、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), "<eval>", 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) 项目开发。