一键导入
cangjie-cjc
仓颉编译器 cjc 核心用法。当需要了解 cjc 编译命令的常用选项,包括基本编译、输出类型、包编译、模块管理、链接库、调试、测试、宏编译、条件编译、优化、交叉编译等,应使用此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
仓颉编译器 cjc 核心用法。当需要了解 cjc 编译命令的常用选项,包括基本编译、输出类型、包编译、模块管理、链接库、调试、测试、宏编译、条件编译、优化、交叉编译等,应使用此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。
在鸿蒙应用(Cangjie)开发中,当需要使用 stdx 拓展库(如 crypto、encoding、net、log、actors 等),或在构建/链接阶段出现 stdx 相关错误时,使用此 Skill 获取/解压 stdx 包,并指导在 entry/cjpm.toml 中正确配置 bin-dependencies.path-option。
在进行仓颉工程或鸿蒙应用开发时的第一步,应该优先读取该SKILL,用来确定后续的开发步骤。
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
仓颉语言附录参考。当需要查阅仓颉语言的关键字列表、运算符优先级与结合性、运算符重载函数签名、运行时环境变量配置、包兼容性规则、TokenKind枚举类型时,应使用此 Skill。
仓颉标准库 Array 类型详细指南。当需要了解 Array 的构造、元素访问、切片、拼接、查找、排序、拷贝、反转、映射、扁平化等操作的完整 API 和用法时,应使用此 Skill。
| name | cangjie-cjc |
| description | 仓颉编译器 cjc 核心用法。当需要了解 cjc 编译命令的常用选项,包括基本编译、输出类型、包编译、模块管理、链接库、调试、测试、宏编译、条件编译、优化、交叉编译等,应使用此 Skill。 |
cjc [option] file... # 编译 .cj 文件,默认生成可执行文件 main
cjc hello.cj # 最简编译
cjc hello.cj -o hello # 指定输出文件名
cjc-frontend:仅前端编译器,输出 LLVM IR(.bc)cjc:自动完成 前端 + 后端 + 链接| 选项 | 说明 |
|---|---|
-o <file> | 指定输出文件路径 |
--output-type=[exe|staticlib|dylib] | 输出类型(默认 exe) |
--output-dir <dir> | 中间文件与输出保存目录 |
cjc tool.cj --output-type=dylib # 生成动态库 libtool.so
cjc tool.cj --output-type=staticlib # 生成静态库 libtool.a
| 选项 | 说明 |
|---|---|
-p, --package | 编译整个包目录 |
--module-name <name> | 指定模块名 |
--import-path <dir> | 添加 .cjo 文件搜索路径(同 CANGJIE_PATH) |
# 编译 log 包为静态库
cjc -p log --output-type=staticlib
# 使用库文件编译主程序
cjc main.cj liblog.a
# 指定模块名并编译
cjc -p src/log --module-name myModule --output-type=staticlib -o myModule/liblog.a
| 选项 | 说明 |
|---|---|
-L <dir> | 库文件搜索目录 |
-l <name> | 链接库(搜索 lib<name>.a/.so) |
--static | 静态链接仓颉库(仅 Linux) |
--static-std / --dy-std | 静态/动态链接 std 模块 |
--static-libs / --dy-libs | 静态/动态链接非 std 模块 |
# 链接 C 库
cjc main.cj -L . -l cProg
# 动态链接标准库(链接 dylib 产物时必须指定)
cjc main.cj mylib.so --dy-std --dy-libs
注意:
--dy-std与--static-libs不可同时使用;--static-std与--dy-libs不可同时使用。
| 选项 | 说明 |
|---|---|
-g | 生成调试信息(须配合 -O0) |
-V, --verbose | 打印编译过程详细信息 |
-v, --version | 打印编译器版本 |
-h, --help | 打印帮助信息 |
--diagnostic-format=[default|noColor|json] | 错误信息输出格式 |
--error-count-limit <N|all> | 限制打印错误数量(默认 8) |
cjc a.cj --test # 编译测试,入口变为 test_entry
cjc -p pkg --test # 整包测试编译
cjc -p pkg --test-only -L out -l main # 仅编译测试文件
cjc --compile-macro macro.cj # 编译宏定义,生成宏动态库
cjc main.cj --debug-macro # 输出宏展开后的代码(用于调试)
cjc main.cj --cfg "env=prod" # 定义自定义条件编译变量
| 选项 | 说明 |
|---|---|
-O0 / -O1 / -O2 / -Os / -Oz | 优化级别 |
--lto=[full|thin] | 链接时优化(仅 Linux) |
-j <N>, --jobs <N> | 并行编译最大线程数 |
--int-overflow=[throwing|wrapping|saturating] | 整数溢出策略(默认 throwing) |
cjc test.cj --lto=full # Full LTO 优化
cjc test.cj -j 4 # 使用 4 线程并行编译
cjc --coverage main.cj # 编译支持覆盖率统计(须 -O0)
cjc test.cj --pgo-instr-gen # PGO 插桩编译
cjc test.cj --pgo-instr-use=default.profdata # 使用 profile 指导优化
# 指定目标平台
cjc hello.cj --target=x86_64-windows-gnu
# 使用 sysroot 简化工具链配置
cjc hello.cj --target=arch-os-env --sysroot /usr/sdk/arch-os-env
| 选项 | 说明 |
|---|---|
--trimpath <prefix> | 移除调试信息中的路径前缀 |
-s, --strip-all | 删除输出文件中的符号表 |
--set-runtime-rpath | 写入运行时库路径到 RPATH |
--disable-reflection | 关闭反射信息生成 |
--no-sub-pkg | 声明无子包以缩减 code size |
--stack-trace-format=[default|simple|all] | 异常调用栈格式 |
# 单文件编译运行
cjc hello.cj -o hello && ./hello
# 多包项目手动编译
cjc -p lib/utils --output-type=staticlib
cjc main.cj libutils.a -o app
# 带调试信息编译
cjc main.cj -g -O0 -o app_debug
# 发布优化构建
cjc main.cj -O2 --lto=full -s -o app_release
提示:多文件项目推荐使用
cjpm(参见cangjie-project-managementSkill),无需手动管理编译依赖。