![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
构建系统
文章平均质量分 66
define_me_freedom
这个作者很懒,什么都没留下…
展开
-
[GN] 生成bin和hex
gn对于工具链的配置只到可执行文件就结束了,在我们之前配置的armcc中,最终生成axf就算结束了,但对于一些应用场景来说,bin和hex是必须的,因此还需要执行额外的步骤来实现bin和hex的生成,对于bin和hex,arm工具链中提供了fromelf来做这件事情。构建后动作gn提供了目标action来做工具链之外的动作,action可以接受python脚本,因此我们的选择就是在pyth...原创 2020-02-06 16:26:05 · 1117 阅读 · 0 评论 -
[GN] 让构建更快更快以及更快
基于GN+ninja的构建系统已经在构建系统层面将速度提升到了极致,但对于编译来说远远没有!我们可以通过对于不常改动的文件编译为lib的方式来避免每次清理后的重复构建,这样直接把编译的过程都省掉了,构建就可以变得更快。静态链接库编译一个静态链接库对于gn来说简直是小菜一碟static_library("stm32f103c8t6") { sources = [ "co...原创 2020-02-06 16:15:40 · 966 阅读 · 0 评论 -
[GN] 工程架构
前面说到了怎么配置一个可用的armcc的工具链,这篇文档将基于其工具链架构一个真实可用的具体工程。环境依赖首先需要下载gn.exe和ninja.exe两个程序,每个程序只有几百k,相对于cmake来说真的是清爽,而且无需安装,可以直接嵌入你的工程,两者均可以在chromium的原码中找到。 下载并安装python3,该步骤并不是必须的,但是gn支持的外部脚本只有python,原生并不支持...原创 2020-02-06 15:55:32 · 1792 阅读 · 2 评论 -
[GN] 配置armcc工具链
对于gn来说,工具链被抽象为一系列的工具描述,我们要做的就是写对应的工具描述文件出来。首先在工程根目录建立一个文件.gn(注意文件的名字为空,后缀为.gn),文件中配置工具链描述文件所在的路径buildconfig = "//build/buildconfig.gn"该变量定义了构建工具链描述文件所在的路径,//表示工程根目录。在buildconfig.gn中定义工具链。s...原创 2020-02-06 14:47:29 · 2722 阅读 · 2 评论 -
[GN] 官方文档
介绍本页面描述了许多语言的细节和行为。使用内置的帮助!GN有一个广泛的内置帮助系统,为每个功能和内置变量提供参考。这个是gn文档的主要来源!gn help设计理念 编写构建文件不应该是一个创造性的努力。理想情况下,两个人应该产生相同的构建文件来实现相同的需求。除非绝对需要,否则不应有任何灵活性。做越多的事情越可能产生致命的错误。 定义应该比代码更像代码。我不...转载 2020-02-06 14:09:14 · 3608 阅读 · 0 评论 -
[GN] 使用GN+Ninja替代MDK进行编译
背景在单片机开发者中,使用MDK一直是一个较为普遍的选择,但是当工程变的越来越大之后,MDK开始力不从心,编译速度下降,配置复杂,编译过程中添加自定义行为困难等问题开始显露出来,因此选择一个更好的编译工具就变成了一个需要提上日程的需求。工具选择make make属于第一代构建系统。经常在linux下开发的开发者对于makefile应该相当熟悉,使用makefile来做工程编译管理是很...原创 2020-02-06 13:30:20 · 3910 阅读 · 2 评论 -
[GN] 谷歌元构建系统GN,toolchain配置
注:主要信息来自于GN的帮助文件典型格式:tool(<tool type>) { <tool variables...> }tool type可选的范围:编译器:"cc": C编译器"cxx": C++ 编译器"objc": Objective C 编译器"objcxx": Objective C++ 编译器"rc": Resourc...原创 2020-01-30 19:02:12 · 2311 阅读 · 0 评论