环境要求

构建

git clone https://github.com/steezer/emjs.git
cd emjs
mkdir -p build && cd build
cmake ..
cmake --build .

CMake 生成的目标:

目标说明
emjs命令行可执行文件
emjs-core核心解释器静态库
emjs-exts扩展模块静态库
test_js脚本测试运行器

安装

cmake --install build --prefix /usr/local

典型安装路径:

最小嵌入示例

#include "engine.h"
#include <cstdio>

using namespace Emjs;

int main() {
  char mem[4096] = {0};
  JsEngine* js = JsEngine::create(mem, sizeof(mem));
  if (!js) return 1;

  JsValue r = js->eval("let x=3; let y=4; x*y + 1;");
  std::printf("%s\n", js->str(r)); // 输出 13

  JsEngine::destroy(js);
  return 0;
}

在项目中链接

c++ -std=c++17 app.cpp -I/path/to/emjs/include/emjs \
    -L/path/to/emjs/lib -lemjs-core -lemjs-exts

项目结构

src/
  core.h / core.cpp       # 词法、语法、解释器、GC
  engine.h / engine.cpp   # 对外 C++ API
  internal.h / internal.cpp
  extension/              # 可选模块(console、math、json...)
app.cpp                   # CLI 源码
tests/script/             # JavaScript 示例脚本

编译选项

选项默认说明
EMJS_OPTIMIZE_SIZEON启用 -Oz 等体积优化
EMJS_ENGINE_DUMPOFF启用 dump() 调试输出
BUILD_CONSOLEON控制各扩展模块是否编译
下一步:使用 命令行工具 运行脚本,或阅读 C++ API 了解嵌入细节。