- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
通过本节学习,您可以:了解鸿蒙系统构建工具链了解Ninja构建工具了解Ninja常用语法了解GN常用语法
鸿蒙系统构建工具链1.什么是工具链?工具链本质上是工具和链。工具的目标是生成可以运行的程序或库文件。为了达到该目标,内部需要经历编译过程和链接过程。编译过程:编译的输入:程序代码;编译的输出:目标文件;编译需要的工具:编译器GCC。链接过程:链接的输入:程序运行所依赖的库文件或某个库所依赖的另一个库文件;链接的输出:程序的可执行文件,或者可被调用的完整的库文件;链接需要的工具:链接器,即LD。
鸿蒙系统构建工具链2.什么是构建工具?构建工具是一个可编程的工具,它描述内容包括:整个工程如何编译、连接、打包等规则,工程中的哪些源文件需要编译以及如何编译,需要创建哪些库文件以及如何创建库文件。构建一个项目通常包含了依赖管理、测试、编译、打包、发布等流程,构建工具可以自动化进行这些操作,从而为我们减少这些繁琐的工作。其中构建工具提供的依赖管理能够可以自动处理依赖关系。例如一个项目需要用到依赖A,A又依赖于B,那么构建工具就能帮我们导入B,而不需要我们手动去寻找并导入。
鸿蒙系统构建工具链3.鸿蒙构建工具链鸿蒙内核LliteOS的编译构建工具是hb,hb是ohos-build的简称,ohos是openharmonyOS的简称。鸿蒙构建系统是由Python、GN、Ninja、makefile等几个部分组成:Python:对参数、环境变量、文件进行操作,负责编译前的准备工作和为GN收集命令参数。GN:GN即GenerateNinja,用于生成Ninja文件。Ninja:Ninja是一个致力于速度的小型编译系统。Makefile:Makefile文件中包括了编译和处理规则,通过Makefile工具解析Makefile文件中的命令来指导整个工程的编译过程。
Ninja构建工具1.Ninja简介Ninja是Google的一名程序员推出的注重速度的构建工具,是一个专注于速度的小型构件系统,只需拷贝一个可执行程序ninja就可以执行,不需要依赖任何库。Ninja的设计目的:是为了使编译过程更快,Ninja类似构建工具make,make即GNUMake,一个用于决定如何使用命令完成最终目标构建的程序。Make本身不知道如何具体的完成目标的构建工作,它需要通过makefile中的描述来决定目标构建的具体方案,根据makefile中的规则执行命令,最后完成编译输出。
Ninja构建工具2.Ubuntu环境安装NinjaNinja编译需要依赖re2c,re2c是一款语法分析器。在Linux系统中右键打开终端,终端中输入命令安装re2c。命令:sudoapt-getinstallre2c检测re2c版本。命令:re2c--version
Ninja构建工具3.Ubuntu环境安装Ninja安装Ninja,在终端中输入下载命令。命令:gitclone/ninja-build/ninja.git对Ninja进行安装和编译。在终端中输入命令:命令:cdninja命令:./configure.py--bootstrap检测Ninja安装情况。命令:sudocp./ninja/usr/bin命令:ninja--version
Ninja常用语法1.基本概念edge(边):build语句,可以指定目标(target)输出(output)、规则(rule)与输入(input),是编译过程拓扑图中的一条边(edge)。target(目标):编译过程需要差生的目标,由build语句指定。output(输出):build语句的前半段,是target的另一种称呼。input(输入):build语句的后半段,用于产生output的文件或目标,另一种称呼是依赖。rule(规则):通过指定command与一些内置变量,决定如何从输入产生输出。Pool:一组rule或edge,通过指定其depth,可以控制并行上限。scope(作用域):变量的作用范围,有rule与build语句的块级,也有文件级别。
Ninja常用语法2.关键字build:定义一个edge。rule:定义一个rule。pool:定义一个pool。default:指定默认的一个或多个target。include:添加一个ninja文件到当前scope。subninja:添加一个ninja文件,其scope与当前文件不同。phony:一个内置的特殊规则,指定非文件的target。
Ninja常用语法3.rule、build及poolrule:一个rule就是通过${in}输入的目
您可能关注的文档
- 《课件-市场营销学项目化教程》_8产品策略.ppt
- 《大学计算机基础(Windows10+Office2016)》_第2章.pptx
- 《密码学基础》_第5章 公钥密码与RSA.ppt
- 《单片机技术及应用》_6.单片机下载软件的学习.ppt
- 《大学计算机基础(Windows10+Office2016)》_第1章.pptx
- 《密码学基础》_第1章 古典密码.ppt
- 《单片机技术及应用》_3.51单片机基础知识.pptx
- 《密码学基础》_第6章 数字签名.ppt
- 《密码学基础》_第7章 消息认证与Hash函数.ppt
- 《密码学基础》_第4章 序列密码.ppt
- 浙江2025学年第一学期高三12月适应性联考日语含答案.doc
- 江苏省镇江市2025-2026学年高三上学期12月期中质量监测语文试题及参考答案.doc
- 山西省部分学校2025-2026学年高三上学期12月月考英语含答案.doc
- 山西省部分学校2025-2026学年高三上学期12月月考政治含答案.doc
- 山西省部分学校2025-2026学年高三上学期12月月考语文试题含答案.doc
- 浙江2025学年第一学期高三12月适应性联考地理含答案.doc
- 浙江2025学年第一学期高三12月适应性联考历史含答案.doc
- 山东省实验中学2025-2026学年高三上学期第三次诊断性考试数学含答案.doc
- 山东省实验中学2025-2026学年高三上学期第三次诊断性考试物理含答案.doc
- 山西省部分学校2025-2026学年高三上学期12月月考数学试题含答案.doc
原创力文档


文档评论(0)