完成迁移

This commit is contained in:
2026-02-02 12:48:25 +08:00
commit 4600cb0957
28 changed files with 79587 additions and 0 deletions

138
yps-quickjs/README.md Normal file
View File

@@ -0,0 +1,138 @@
# 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) 项目开发。