《仓颉语言实战》仓颉编译器cjc详解:常用编译选项与条件编译速查表
2026/9/24 17:10:17 网站建设 项目流程

《仓颉语言实战》仓颉编译器cjc详解:常用编译选项与条件编译速查表

【免费下载链接】仓颉语言实战-张磊仓颉语言实战由张磊编写,清华大学出版社出版。 该书践行“零基础入门仓颉语言”的理念,具有内容通俗易懂,知识点循序渐进的特点,可以帮助读者快速掌握仓颉编程语言。项目地址: https://gitcode.com/Cangjie-SIG/cangjieyuyanshizhan-ZL

《仓颉语言实战》(张磊 著,清华大学出版社)配套源码仓库中,第26章完整演示了仓颉编译器 cjc的常用编译选项与条件编译写法。本文以"速查表"形式整理 cjc 编译命令、核心参数、@When条件编译宏与单元测试编译方法,帮助新手快速上手仓颉语言的编译与构建流程,无需逐字通读也能查表即用。

一、cjc 是什么?一分钟理解仓颉编译器

cjc 是仓颉语言自带的官方编译器命令,负责把.cj源文件编译、链接为可执行程序。其基本用法如下:

cjc compile main.cj

执行后会在当前目录生成与入口函数同名的可执行文件(如main)。你可以通过cjc compile --help查看全部选项,下面这张表汇总了日常开发最常用的参数。

二、cjc 常用编译选项速查表 💡

选项作用典型场景
compile编译子命令,后接.cj文件日常编译的固定入口
-target <平台>指定目标平台,如x86_64-unknown-linux交叉编译到不同系统
-opt <0~3>设置优化等级,数字越大优化越深发布版用高级优化
-I <路径>添加源文件搜索路径多目录工程管理
-l <库名>链接外部 C 库调用系统 C 接口
--lib-path <路径>指定链接库搜索路径第三方库位置不在默认目录
--import <包>编译时导入第三方包使用社区仓颉包
--export <包>将源文件导出为包把模块发布为可复用包
--emit <格式>指定产物类型:可执行文件/动态库/目标文件编译成.so动态库
-D <宏=值>定义编译期宏,供@When使用条件编译的开关来源
--test以单元测试模式运行编译产物@TestCase用例
--testcase <用例>只运行指定测试用例快速验证单个用例
--print-cangjie-ir打印仓颉中间表示学习编译器原理
--print-llvm-ir打印 LLVM IR深入底层代码生成
--version/--help查看版本 / 帮助信息环境自检

📌 新手记忆法:日常只需记住compile-opt-D--test--import/--export五组,其余按需查表即可。

三、条件编译:用 @When 让代码"按环境生效"

条件编译是 cjc 编译选项的高阶玩法:通过@When[条件]标注代码块,再配合-D选项传入宏值,让同一段源码在不同平台或配置下编译出不同行为。

1. 按操作系统分支(见 condition_compile.cj)

// @When[os == "linux"] // func print() { println("linux") }

2. 按自定义宏分支(见 user_defined_condition_compile.cj):编译时加上-D db=mysql,即可让@When[db=="mysql"]标注的函数参与编译。

3. 多条件组合(见 multi_condition_compile.cj):使用&&连接多个条件,例如@When[db=="mysql"&&os=="linux"],实现"数据库 + 操作系统"双重定向编译,适合按部署环境裁剪功能。

⚠️ 注意:书中示例已全面适配仓颉 1.0.0,当前版本暂不支持when关键字,相关写法在示例中以注释形式保留,升级后可直接放开使用。

四、编译即测试:用 --test 跑单元测试

--test加入编译命令,cjc 会执行源码中的@TestCase用例。配套示例 test_demo.cj 基于std.unittest框架定义测试类,编译运行后即可在终端看到用例输出,无需额外测试工具。

五、包编译实战:--export 与 --import 配合

书中 log/printer.cj 演示了将日志模块导出为包log,再由 cjc_demo.cj 通过import log.printLog导入使用;同目录的 loga/printer.cj 则展示了同一功能的另一种时间格式化写法,方便对比学习。编译时通过--export log指定包名,即可让其他文件引用。

六、获取完整示例代码

配套仓库包含全书 27 章示例,可直接克隆使用:

git clone https://gitcode.com/Cangjie-SIG/cangjieyuyanshizhan-ZL

编译选项与条件编译的完整示例集中在 code/Chapter26/ 目录,调试相关的cjdbg命令则可在 code/Chapter27/ 中继续学习。


小结🚀:cjc compile是仓颉开发的起点——用-opt调优化、用-D+@When做条件编译、用--test跑测试、用--export/--import组织包。掌握这张速查表,再配合《仓颉语言实战》第26章的逐行示例,即可独立完成从编写到发布的完整编译流程。

【免费下载链接】仓颉语言实战-张磊仓颉语言实战由张磊编写,清华大学出版社出版。 该书践行“零基础入门仓颉语言”的理念,具有内容通俗易懂,知识点循序渐进的特点,可以帮助读者快速掌握仓颉编程语言。项目地址: https://gitcode.com/Cangjie-SIG/cangjieyuyanshizhan-ZL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询