首页 > 其他分享 >gn/ninja: 谷歌的新一代项目构建系统简介

gn/ninja: 谷歌的新一代项目构建系统简介

时间:2023-08-03 17:56:01浏览次数:32  
标签:项目 简介 构建 https gn ninja com

gn/ninja 背景

gn是谷歌开源的一个元构建系统(meta-build system)。这个”元构建“的意思是,gn并不直接帮你构建项目,而是帮你产生构建项目的ninja文件,然后你再用ninja去构建项目。或者你可以这么理解,gn相当于帮你生成Makefile,然后你再用make去编译构建你的项目。

这么做的原因是,ninja虽然有构建速度快的优点,但它更多是为机器解析设计的,人能看懂ninja文件,但要为项目手写ninja文件就比较繁琐。gn结合ninja,能够让我们方便的创建和维护项目,同时又能享受ninja的编译性能。

目前已经有不少项目使用gn/ninja,其中最著名的之一就是Chromium(谷歌Chrome浏览器的开源版本)。Chromium代码库庞大,依赖关系复杂,需要支持多个编译目标,gn/ninja组合正适合这样的大型C++项目的构建。

 

安装和基本使用流程

以Ubuntu Linux为例,首先需要先安装ninja:

sudo apt install ninja

gn的安装,可以从官网下载代码编译:

git clone https://gn.googlesource.com/gn
cd gn
python build/gen.py
ninja -C out

然后把二进制文件放到你的路径里即可。

gn的基本使用流程,首先用gn生成ninja文件,然后用ninja来编译构建项目。

gn gen out
ninja -C out/

 

refs:

https://pingzhou.site/notes/gn_101.html

https://www.jianshu.com/p/1ca0d04376a5

Quick start guide: https://gn.googlesource.com/gn/+/main/docs/quick_start.md

Reference: https://gn.googlesource.com/gn/+/main/docs/reference.md

 

标签:项目,简介,构建,https,gn,ninja,com
From: https://www.cnblogs.com/bluestorm/p/17604046.html

相关文章

  • pyppeteer异常:ValueError: signal only works in main thread
    当在子线程中调用pyppeteer工具的时候,会报错:ValueError:signalonlyworksinmainthread。解决方案:在创建浏览器对象时,加上以下三个字段: ......
  • Ext Designer1.0试用手记
         Ext官网在4月22日推出了ExtDesigner1.0正式版,该版本可以试用14天。下面就是笔者的试用过程。   安装过程很简单,在这里就不赘述了。   软件运行后,将出现一个下图所示的注册窗口:      这里需要一个官网论坛帐号。   注册后,将显示以下窗口:    ......
  • pycharm配置QtDesigner
    一、安装需要的库pipinstallpyqt5pipinstallpyqt5-tools 二、配置QtDesigner 配置 QtDesignerName:QtDesignerGroup:QtProgram:C:\python\venv\Lib\site-packages\qt5_applications\Qt\bin\designer.exeWorkingdirectory:$ProjectFileDir$ 配置 PyUICNa......
  • 算法笔记(二)—— 认识N(logN)的排序算法
    递归行为的时间复杂度估算整个递归过程是一棵多叉树,递归过程相当于利用栈做了一次后序遍历。对于master公式,T(N)表明母问题的规模为N,T(N/b)表明每次子问题的规模,a为调用次数,加号后面表明,除去调用之外,剩余语句的复杂度是多少,算出d。根据上次三个判断公式进行算法时间复杂度计算......
  • Linux简介与历史
    Linux简介#Linux是什么?与大家熟知的Windows操作系统软件一样,Linux也是一个操作系统软件。但是与Windows不同的是,Linux是一套开放源代码程序的、并且可以自由传播的类Unix操作系统软件。其在设计之初,就是基于Intelx86系列CPU架构计算机的。它是一个基于POSIX的多用户......
  • JVM 简介
    一、JVM简介1.1字节码由编译器编译程序得到的二进制文件(.class文件)。不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行(具有跨平台性,一次编译,到处运行)。1.2虚拟机虚拟机(VirtualMachine)可以分为系统虚拟机和程序虚拟机:(1)系统虚拟机:完全是对......
  • 解决 heatmap.js 'Cannot assign to read only property 'data' of object' 问题与 p
    一、问题背景问题是这样发生的,因为项目中需要实现热力图的功能,所以使用了第三方的库heatmap.js。但是在一些浏览器中使用它时,会出现这个错误:>UncaughtTypeError:Cannotassigntoreadonlyproperty'data'ofobject'#<ImageData>'出现问题的原因是因为img.data=im......
  • dwarf简介
    原文链接:如果我们可以编写确保能正确工作且永远不需要调试的程序,这将非常美妙。在梦想成真之前,通常的编程周期还将是包括:编写一个程序,编译它,执行它,然后可怕的、灾难般的调试。然后重复以上步骤,直到程序如期工作。通过插入打印各种感兴趣变量的值的代码来调试程序是可能的。事实......
  • 动力节点第四章OpenFeign与负载均衡-最全springcloud Alibaba学习笔记
    学习笔记视频:https://www.bilibili.com/video/BV1VW4y1o7n5本课程使用的是目前最新版本2022.0.0.0-RC2。基于SpringBoot3.0与JDK20的开发环境。课程内容涵盖了SpringCloudAlibaba所有的技术点,主要讲述包括NacosDiscovery、NacosConfig、OpenFeign、SpringCloudLoadbalance......
  • 论文解读(APCA)《Adaptive prototype and consistency alignment for semi-supervised d
    [Wechat:Y466551|付费咨询,非诚勿扰]论文信息论文标题:Adaptiveprototypeandconsistencyalignmentforsemi-superviseddomainadaptation论文作者:JihongOuyang、ZhengjieZhang、QingyiMeng论文来源:2023aRxiv论文地址:download 论文代码:download视屏讲解:click1介绍......