بنقرة واحدة
cangjie-lib-build
编译纯仓颉 cjpm 库项目(非 HarmonyOS 应用)。自动检测仓颉 SDK,执行 cjpm build 与 cjpm test。在库目录下说编译/构建/build/打包/跑测试时使用
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
编译纯仓颉 cjpm 库项目(非 HarmonyOS 应用)。自动检测仓颉 SDK,执行 cjpm build 与 cjpm test。在库目录下说编译/构建/build/打包/跑测试时使用
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
仓颉语言 HarmonyOS 开发的入口路由。遇到仓颉语法、HarmonyOS API、编译构建等问题时自动加载,引导使用正确的 skill
编译构建仓颉 HarmonyOS 应用,执行 ohpm 依赖安装、仓颉资源同步和 HAP 包打包。用户说编译、构建、build、打包时触发
将任意语言的三方库/SDK/工具包翻译为纯仓颉 cjpm 包。关注 API 面、依赖策略、包骨架与构建验证;不涉及 HarmonyOS 应用资源与 UI
将其他语言代码翻译为仓颉语言。支持 ArkTS、Swift、Java、Python 到仓颉的转换,记录翻译经验和等价写法差异
从 GitCode 下载最新仓颉语言和 HarmonyOS 原始文档。当 cangjie-kernel 和 cangjie-harmony 未覆盖所需内容时作为兜底使用
仓颉开发经验总结。遇到编译错误、API 差异、迁移问题时查阅已积累的踩坑记录和解决方案
| name | cangjie-lib-build |
| description | 编译纯仓颉 cjpm 库项目(非 HarmonyOS 应用)。自动检测仓颉 SDK,执行 cjpm build 与 cjpm test。在库目录下说编译/构建/build/打包/跑测试时使用 |
| allowed-tools | Bash(python3 *), Bash(ls *), Bash(cat *) |
| argument-hint | [lib-path] [-v 8k|15k] [--no-test] [--clean] |
执行:
python3 ${CLAUDE_SKILL_DIR}/lib_build.py $ARGUMENTS
| # | 检查项 | 检查方式 | 未通过时 |
|---|---|---|---|
| 1 | 项目类型是 cjpm 库 | 工程根含 cjpm.toml,无 entry/ | 若是 HarmonyOS 应用 → 改用 /build |
| 2 | 仓颉 SDK 可用 | ~/.cangjie-sdk/ 存在或 .env 中已配置 | 提示用户安装仓颉 SDK |
| 3 | 构建版本确认 | .openvk-version 或 -v 参数 | 默认使用 8k |
| 4 | 是否需要运行测试 | 检查 src/*_test.cj、tests/ 或 cjpm.toml 中 [test] 段 | 无测试则跳过;用户可加 --no-test |
仅适用于纯仓颉库项目(cjpm 包),不适用于 HarmonyOS 应用。
判定规则:
| 工程根含 | 应使用 |
|---|---|
cjpm.toml,无 entry/ / module.json5 / app.json5 | 本 skill /cangjie-lib-build |
entry/ + module.json5 + app.json5 | /build(应用级) |
库项目可由 /cangjie-translate-lib 翻译产出;本 skill 是其 Phase 9(构建验证)的执行手段,也可独立使用。
脚本按顺序执行:
[lib-path] 解析(默认当前目录),必须含 cjpm.toml,否则退出码 2.env,回退到 CangjieTransSkills 项目根的 .env;都没有则全靠自动检测.env 中 CANGJIE_SDK_HOME-<version> → CANGJIE_SDK_HOME → ~/.cangjie-sdk/ 自动扫描source <sdk>/build-tools/envsetup.sh(Windows 用 .ps1),让 cjpm/cjc 进入 PATHcjpm clean — 加 --clean 触发;失败仅警告,继续构建cjpm build — 依次以 static → dynamic → executable(仅当 src/main.cj 存在时)构建全部产物,每次构建后恢复原始 output-typetarget/release/ 下的二进制文件(.a/.dylib/.so/.dll/.cjo/可执行文件)cjpm test — 在库根含 src/*_test.cj、tests/ 目录或 cjpm.toml 内有 [test] / [[test]] 段时执行;加 --no-test 跳过/build 的关键差异| 维度 | /build(应用级) | /cangjie-lib-build(库级) |
|---|---|---|
| 工具链 | ohpm + hvigorw + node + Java | cjpm + cjc |
DEVECO_HOME | 必填 | 不需要 |
| 仓颉 SDK | 需要 | 需要 |
| 工作目录 | 项目根(脚本向上 4 级定位) | 库根(参数指定或当前目录) |
| 产物 | entry/build/.../*.hap | <lib>/target/(.cjo / .a / .dylib / .so / 可执行文件) |
| "运行" | 装 hap 到设备/模拟器 | 有 main.cj 时可执行;否则以 cjpm test 验证 |
最小可用配置:装好 ~/.cangjie-sdk/ 即可,.env 可空。
如需锁定 SDK 路径或多版本切换,在 .env 中:
# 通用路径(所有版本回退)
CANGJIE_SDK_HOME=/Users/xxx/.cangjie-sdk/6.0/cangjie
# 版本专用路径(优先级高于通用路径)
CANGJIE_SDK_HOME-8k=/Users/xxx/.cangjie-sdk/6.0/cangjie
CANGJIE_SDK_HOME-15k=/Users/xxx/.cangjie-sdk/6.0/compatibility-sdk-xxx/compatibility
.openvk-version 文件(值 8k 或 15k)可锁定默认版本;未指定时按 8k。.env 与 .openvk-version 都按"先库根、后项目根"的顺序查找。
# 当前目录就是库根
python3 ${CLAUDE_SKILL_DIR}/lib_build.py
# 指定库路径
python3 ${CLAUDE_SKILL_DIR}/lib_build.py /path/to/my-lib
# 跳过测试
python3 ${CLAUDE_SKILL_DIR}/lib_build.py --no-test
# 切版本 + 先清理再编
python3 ${CLAUDE_SKILL_DIR}/lib_build.py -v 15k --clean
未找到 cjpm.toml → 路径不对;用 ls 确认库根目录未找到对应版本的仓颉 SDK → ~/.cangjie-sdk/ 下无对应版本,或 .env 中 CANGJIE_SDK_HOME / CANGJIE_SDK_HOME-<version> 路径错未在 SDK 中找到 cjpm 可执行文件 → SDK 安装不全;查 <sdk>/bin/cjpm 是否存在cjpm build 编译错误 → 错误信息含 .cj 文件路径与行号;先查 evolution/cangjie/syntax.md,再查 cangjie-translate-lib/experience/cjpm test 失败 → 测试自身问题;用 --no-test 隔离再单独排查evolution/cangjie/,库工程化问题(包循环、导出不一致等)写入 cangjie-translate-lib/experience/