"UsingGNbuild.pdf" 是一份关于GN构建系统的详细说明文档,主要涵盖了GN的使用、历史、重要文件以及如何创建输出目录和建立依赖关系等内容。 GN(Google Ninja Generator)是谷歌开发的一个构建系统生成器,它用于生成Ninja构建文件,以提高构建效率。GN的主要目标是提供一个灵活且高效的跨平台解决方案,用于管理大型项目如Chrome的构建过程。 历史背景: GN的诞生源于Chrome项目的需求。最初,Chrome使用Visual Studio的项目文件进行构建,然后在2009年转向了GYP(Generate Your Projects)系统,以实现跨平台的兼容性,尤其是在Mac上保持与Visual Studio的构建一致性。然而,随着项目的复杂度增加,GYP无法满足需求,因此在2015年左右,Chrome开始转向GN,以应对大约100倍的复杂性提升,因为GN能够更好地处理大规模项目,并且所有目标都直接针对Ninja构建工具。 关键文件: 1. `.gn` 文件:这是GN构建树的根定义文件,用于指定项目的起点。通过运行`gn help dotfile`可以获取更多关于`.gn`文件的信息。 2. `//build/config/BUILDCONFIG.gn`:这个文件由`.gn`文件指定,用于设置全局变量和默认构建配置。 使用步骤: 1. 生成输出目录:使用`gn gen out/Default`命令创建一个名为`out/Default`的输出目录。 2. 创建或更新BUILD.gn文件:例如,创建一个`base`库,需要在相应目录下创建`BUILD.gn`文件并定义库规则。 3. 构建项目:运行`ninja -C out/Default base`来构建`base`库。这将自动生成Ninja构建文件并执行编译任务。 依赖关系: 在GN中,你可以定义静态库或动态库,并声明其依赖。例如,`static_library("base")`定义了一个名为`base`的静态库,包含`a.cc`和`b.cc`源文件。`deps`字段则用于指定其他库作为依赖,如`//fancypants`和`//foo/bar:baz`。 标签系统: GN使用标签来标识和引用源文件和构建规则。全标签形式为`//chrome/browser:version`,表示在`chrome/browser/BUILD.gn`文件中查找名为`version`的目标。标签的使用使得在整个项目中引用和管理依赖变得简单。 GNbuild是Google为大型项目设计的一种构建系统,通过它可以高效地管理和构建复杂的代码库。这份"UsingGNbuild.pdf"文档深入讲解了GN的各个方面,对于理解和使用GN构建系统至关重要。
![](https://csdnimg.cn/release/download_crawler_static/88668264/bga.jpg)
![](https://csdnimg.cn/release/download_crawler_static/88668264/bgb.jpg)
![](https://csdnimg.cn/release/download_crawler_static/88668264/bgc.jpg)
剩余55页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://profile-avatar.csdnimg.cn/95cb705d62b4478cace6b11bdf3e9c8e_arv002.jpg!1)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/user-vip.1c89f3c5.png)
- 粉丝: 3w+
- 资源: 120
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决Eclipse配置与导入Java工程常见问题
- 真空发生器:工作原理与抽吸性能分析
- 爱立信RBS6201开站流程详解
- 电脑开机声音解析:故障诊断指南
- JAVA实现贪吃蛇游戏
- 模糊神经网络实现与自学习能力探索
- PID型模糊神经网络控制器设计与学习算法
- 模糊神经网络在自适应PID控制器中的应用
- C++实现的学生成绩管理系统设计
- 802.1D STP 实现与优化:二层交换机中的生成树协议
- 解决Windows无法完成SD卡格式化的九种方法
- 软件测试方法:Beta与Alpha测试详解
- 软件测试周期详解:从需求分析到维护测试
- CMMI模型详解:软件企业能力提升的关键
- 移动Web开发框架选择:jQueryMobile、jQTouch、SenchaTouch对比
- Java程序设计试题与复习指南
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)