导读

  1. 全文约1300字,阅读约需要4分钟;

  2. 编译选项;

  3. 编译过程;

在上一篇《HarmonyOS初体验》中,我们通过

python build.py wifiiot

完成了Hi3861开发板所需版本的编译,这一篇具体说一下这个编译过程。

01

编译选项

当前HarmonyOS一共支持四个参数:

  product: 具体要编译的项目  -b --build_type: release or debug,默认relaese  -t --test: Compile test suit  -n --ndk: Compile ndk,默认False

支持的product有三种,可以在目录“build/lite/product”中找到:

ipcamera_hi3516dv300.jsonipcamera_hi3518ev300.jsonwifiiot.json

02

编译过程

  • 执行“python build.py wifiiot”,build.py会首先调用compile.py的add_options生成对应的编译参数,如下:

    product=wifiiot

    build_type=release

    test=None

    ndk=False

  • 接下来build.py调用compile.py的exec_command

  • exec_command调用compile_process.py的config_create和run_build

  • config_create
    1. 创建out目录
    2. 解析product配置文件:
    “build/lite/product/wifiiot.json”

    该文件中会指定好board:"hi3861v100"

  • run_build调用config.py的compile,执行下面两个命令1.gn gen /home/harmony/out/wifiiot --root=. --dotfile=build/lite/.gn --args='product ="wifiiot" ohos_build_type = "release"'
    用于生成ninja编译脚本,执行过后会在out/wifiiot下生成完整的目录树以及各个 ninja文件2.ninja -w dupbuild=warn -C /home/harmony/out/wifiiot执行上一步生成的ninjia文件完成编译

我们可以看出,harmonyOS和fuchsia一样,有两个关键的编译选项:product和board,不过含义就大相径庭了,想了解fuchsia的读者可以参考这一篇《Fuchsia源码下载、编译配置、运行环境介绍》。

HarmonyOS主要通过gn和ninja来完成编译,想进一步了解gn的语法可以参考这两篇:

1.https://chromium.googlesource.com/chromium/src/tools/gn/+/48062805e19b4697c5fbd926dc649c78b6aaa138/docs/language.md

2.https://gn.googlesource.com/gn/+/master/docs/reference.md

————  e n d ————

编译选项_HarmonyOS编译过程相关推荐

  1. 【Linux】Linux添加系统调用以及内核编译过程

    在想要替换原有系统内核或者需要在原来的系统中添加一些系统调用的时候就会涉及到Linux内核的编译.但是内核编译虽然步骤简单,但是需要注意的东西还是太多了.首先一点就是由于Linux的开源性导致的版本问 ...

  2. GCC编译过程与动态链接库和静态链接库

    1. 库的介绍 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可 ...

  3. Linux下Gcc 的编译过程

    在linux下开发难免会用到gcc编译.GCC(GNU Compiler Collection.GNU编译器套装),是由 GNU 开发的编程语言编译器.它是GNU编译器套装以GPL许可证所发行的自由软 ...

  4. GCC/G++编译过程

    GCC编译过程 # 编写一个最简单的C++程序 $ cat hello.cpp int main() {return 0; }# -v选项可以打印出详细的编译过程,以及编译命令. $ gcc -v - ...

  5. linux下gcc的编译过程详解

    Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一 ...

  6. linux内核的配置过程,linux内核的配置机制及其编译过程

    linux内核的配置机制及其编译过程. 一.配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linu ...

  7. Android编译过程详解(三)

    Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html Android编译过程详解(二):h ...

  8. CUDA学习(二)-NVCC的编译过程及命令

    nvcc编译过程第一篇:https://blog.csdn.net/shungry/article/details/89715468 正文:编译流程(补充) 以我mytest.cu为例子,输入以下命令 ...

  9. Linux-C C语言编译过程

    Linux-C C语言编译过程 一.简述     GCC(GNU Compiler Collection,即 GNU 编译器套装),是一套由 GNU  开发的编程 语言编译器.简单介绍使用gcc编译器 ...

最新文章

  1. SAP 关于EWM的WT增强简介
  2. openstack migrate image
  3. C++union 联合
  4. 【 iview 实践指南】之如何优雅地在Table中嵌套Input(代码篇)
  5. 使用SpringMVC模拟文件上传与下载案例
  6. Bootstrap圣诞节主题商城网站模板
  7. python匹配字符串_字符串匹配算法之Kmp算法(Python实现)
  8. UVA10696 f91【数学函数+打表】
  9. C++基础——有关FILE的那些函数
  10. JAVA基础_ Scanner扫描仪
  11. 一款炫丽的网页播放器插件
  12. QStyle之PenStyle的CustomDashLine使用
  13. 关于influxdb的measurement(表)
  14. GitHub 的 Fork 是什么意思?
  15. c#后端QQ通讯录(代码部分)
  16. 自媒体批量下载短视频软件,批量下载短视频有诀窍
  17. 红领巾小创客机器人活动计划_红领巾小创客活动过程.docx
  18. ios 6 beta试用记录
  19. Scrapy爬取顶点小说
  20. 组合索引mysql语句_Mysql之组合索引方法详解

热门文章

  1. Python的命名空间和作用域
  2. .net中的IO体系介绍
  3. 深入分析Java单例模式的各种方案
  4. 小P寻宝记——好基友一起走 背包
  5. 努力成为优秀的工程师
  6. SUN Zone Cluster安装及配置说明之三
  7. 解释一下c语言 for(;;) printf(*);,printf()函数的一个问题
  8. android悬浮动态权限,android应用内悬浮窗-自动贴边,不需要权限!
  9. mysql布隆过滤器源码_通过实例解析布隆过滤器工作原理及实例
  10. w10连接不上网络问题_【问题解决】微软OneNote使用笔记,onenote无法连接网络无法同步解决方法...