- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
2.2鸿蒙系统构建工具链
通过本节学习,您可以:了解鸿蒙系统构建工具链了解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:一个rul
您可能关注的文档
- 《鸿蒙智能互联设备开发(微课版)》 课件 1.1.1 鸿蒙操作系统的诞生.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 1.1.2 鸿蒙生态建设.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 1.2.1 鸿蒙操作系统技术架构.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 1.2.2 鸿蒙操作系统技术特性.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 1.2.3 鸿蒙操作系统类型.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 2.1.1 鸿蒙设备开发硬件环境要求.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 2.1.2 鸿蒙设备开发软件环境要求.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 2.1.3 鸿蒙设备开发环境的搭建.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 2.2.1 鸿蒙构建工具链介绍.pptx
- 《鸿蒙智能互联设备开发(微课版)》 课件 2.2.2 Ninja构建工具介绍.pptx
- DB14∕T 143-2019 苹果褐斑病测报调查规范.docx
- DB14∕T 1417-2017 人工生态公益林经营技术规范.docx
- DB14∕T 1469-2017 胡麻垄膜集雨沟播栽培技术规程.docx
- DB14∕T 1457-2017 带柄玻璃杯标准规范.docx
- DB14∕T 1394-2017 北柴胡良种繁育技术规程.docx
- DB14∕T 1352-2017 晋北区旱地黍子栽培技术规程.docx
- DB14∕T 560-2010 人工影响天气火箭作业系统年检技术规范.docx
- DB14∕T 1510-2017 玉米镰孢穗腐病抗性鉴定牙签接种技术规程.docx
- DB14∕T 166.2-2007 太原绿色转型标准体系 第2部分:框架.docx
- DB14∕T 703-2012 气象灾害等级划分.docx
文档评论(0)