文档开发者中心
我的

鸿蒙构建系统——GN官方FAQ翻译,以及GN官方文档分享

1、GN 的文档在哪里?

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

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

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

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

3、我如何生成一般的构建变种(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

4、我如何进行交叉编译?

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

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

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

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

6、有关于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

| 转载:https://harmonyos.51cto.com/posts/1888

attachmenttype
UsingGNbuild.pdf
download
attachmenttype
gn-reference.pdf
download
attachmenttype
gn-quick_start.pdf
download
attachmenttype
gn-language.pdf
download
点赞
4
收藏
回复
1
分享
举报
浏览2121 发布于2022-01-07 01:26未知归属地
全部评论
最多点赞
最新发布
最早发布

干货满满,大佬厉害学习了

1楼回复于2022-01-20 13:02 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。