鸿蒙构建系统——gn官方FAQ翻译,以及gn官方文档分享
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
作者:许思维
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
简化的鸿蒙WiFi接口,仅需几行代码,简单易用!
使用鸿蒙原始WiFI API接口进行编程,整个过程稍显繁琐,为此我们对鸿蒙原始WiFi API接口做了一层封装,形成了一套更简单易用的接口。 简化后的API接口 STA模式 // 连接WiFi热点,并启动DHCP客户端;成功会返回一个netId,失败返回 -1 int ConnectToHotspot(WifiDeviceConfig* apConfig); // 断开WiFi连接,以及停止DHCP客户端 void DisconnectWithHotspot(int netId); AP模式 // 打开WiFi热点,同时启动DHCP服务器,成功返回SUCCESS int StartHotspot(const HotspotConfig* config); void StopHotspot(void); 使用示例 STA模式,连接其他热点: // setup your AP params WifiDeviceConfig apConfig = {0}; strcpy(apConfig.ssid, "ABCD"); strcpy(apConfig.preSharedKey, "123456...
- 下一篇
Flutter应用——5个高效的Flutter开发工具
1.你是否需要更好,更简洁的日志 当你在开发Flutter应用程序时,难以理解的日志是一个大问题,因为没有快速的方法来根据问题的严重程度过滤你的日志。抛出异常或记录一条简单的调试消息?他们看起来都一样。 如果你的Flutter app需要更好的日志系统,Logger 软件包绝对是个好东西。 Logger包地址:https://pub.dev/packages/logger 它受到Java分级日志的启发,允许您向日志添加级别。 日志级别,目前有: logger.v("Add more detailed debug messages, " "can contain sensitive information, never enable it in production"); logger.d("Fine grained information to debug an application"); logger.i("Track the flow of the application"); logger.w("A potential but expected problem"); logge...
相关文章
文章评论
共有0条评论来说两句吧...