鸿蒙构建系统——gn官方FAQ翻译,以及gn官方文档分享 原创 精华

码工许师傅
发布于 2020-11-26 18:08
浏览
13收藏

GN FAQ 翻译

(PS:花了将近半个小时,把GN的官方FAQ翻译了一遍,有错漏之处欢迎大家指正。)

 

GN 的文档在哪里?

GN有大量的内置的帮助文档,所以你可以运行gn help命令查阅,但是你同样可以在“参考页面”(PS:附件文档包中的gn-reference.pdf)查阅全部帮助文档。你同样可以查阅“快速入门指南”(PS:附件文档包中的gn-quick_start.pdf)和“语言和操作细节”(PS:附件文档包中的gn-language.pdf)。

 

我可以生成XCode或者Visual Studio项目吗?

你可以用一次构建(PS: gn是两阶段构建的工具)为XCode,Visual Studio,QTCreator和Eclipse生成带有文件列表和目标的骨架(或包装)项目,但是使用 Ninja执行实际的构建(PS:第二次构建)。你不能像使用GYP cloud那样生成真的看起来和这些工具直接创建的一样的项目。

了解详细内容,请运行gn help gen。

 

我如何生成一般的构建变种(build variants)?

在GN中,参数在构建目录中,而不是在全局环境中。要编辑你的`out/Default`构建目录下的参数,执行:

gn args out/Default

(PS: 这个命令会打开一个编辑器(默认是vim),查看的话用这个命令:gn args out/Default --list)

 

你可以在这个文件中设置变量:

  • 默认是debug构建,改为release构建,添加:is_debug = false
  • 默认是静态编译,改为组件编译,添加:is_component_build = true
  • 默认是developer构建,改为offical构建,添加:is_offical_build = true
  • 默认是chromium构建,改为Chrome构建,设置:is_chrome_build = true

 

我如何进行交叉编译?

GN有健壮的交叉编译和一次构建生成多个架构文件的支持。

详细信息,请查阅GN交叉编译文档(cross_compile.md)。

 

我可以控制默认编译什么目标吗?

可以!你可以在顶层目录的构建文件中创建一个叫做“default”的组目标,例如“//:default”,GN将会告诉ninja默认编译这个目标,而不是编译所有的目标。

 

有关于GN的公开演示讲解吗?

这里有一个最近的,2015年的。从那之后,除了将gn变为一个独立的代码仓之外,没有什么太大的变化,所以仍然是相关的。

 

-------------------------------- 分割线 --------------------------------

 

以下是我补充的两个自问自答  ;-)

 

为什么翻译这个FAQ?

学习知识讲究追本溯源,具体到学习软件开发,往往就是查阅官方文档和代码。

 

鸿蒙使用gn(Generate Ninja)作为构建系统,而 gn 是由谷歌开发的,目前能够找到的文档基本上都是英文的。

FAQ是几个文档中间比较短小的一篇,同时也是初学者容易有疑问的地方。

 

为什么搬运这些资料?

gn项目官网:https://gn.googlesource.com/gn/

由于国内部分网络条件下无法访问 googlesource.com ,这给广大开发者查阅gn官方文档带了很大的不便。

 

本帖附件的几个资料包分别是:

1. gn源码包:gn.zip ;

2. gn文档包:gn-docs.zip ;

3. 谷歌大佬关于GN分享的PPT:Using GN build.pdf

 

欢迎大家下载查阅。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
Using GN build.pdf 305.2K 1409次下载
gn-docs.zip 1.54M 1394次下载
gn.zip 1.32M 1098次下载
已于2020-12-26 10:26:00修改
23
收藏 13
回复
举报
13条回复
按时间正序
/
按时间倒序
鲜橙加冰
鲜橙加冰

反手就是一个赞。。。。。。。

回复
2020-11-26 18:11:19
longlong899
longlong899

好帖,好帖,顶起来!

回复
2020-11-26 18:18:20
jowvid
jowvid

一天两篇 高手 这是高手

回复
2020-11-26 18:44:06
mb5fc0a568cb44e
mb5fc0a568cb44e

不知道说啥好!!!

回复
2020-11-27 15:09:29
mb5c6d5deecae8a
mb5c6d5deecae8a

深度好文,鸿蒙用gn构建,多,快,好,省

回复
2021-1-28 22:53:40
qq6052c9efcc083
qq6052c9efcc083

你翻译的东西呢

回复
2021-3-18 11:34:49
liangkz_梁开祝
liangkz_梁开祝

附件源码包中的例子,对初学者来说感觉还是太复杂了一点,

我自己做了一个非常简单的demo,还有readme文档,放在

https://gitee.com/liangkzgitee/GnProjs.git 欢迎下载下来学习。

3
回复
2021-4-21 20:43:37
mb6088ba9f21d52
mb6088ba9f21d52

原码怎么编译不过呢

回复
2021-4-28 09:59:54
liangkz_梁开祝
liangkz_梁开祝 回复了 mb6088ba9f21d52
原码怎么编译不过呢

要先确认自己装有gn+ninja,还要装有需要用到的编译器 clang、gcc。

回复
2021-4-28 13:47:15
wx6140a4a1bd2a7
wx6140a4a1bd2a7

感谢!辛苦!

回复
2021-9-14 21:41:16
wx650c5e2f5cc53
wx650c5e2f5cc53

很好学习到了很多

回复
2023-9-21 23:16:49
物联风景
物联风景

不错不错,挺好的.许总太厉害了!!!


回复
2023-9-22 09:25:12
云端筑梦
云端筑梦 回复了 liangkz_梁开祝
附件源码包中的例子,对初学者来说感觉还是太复杂了一点, 我自己做了一个非常简单的demo,还有readme文档,放在 https://gitee.com/liangkzgitee/GnProjs.git 欢迎下载下来学习。

感谢梁老师分享

回复
2024-5-23 11:56:52
回复
    相关推荐