需求

gn, ninja 的开发环境下,实现 hello world 的编译,用以摸清最简单用法。

解决

gn 文件准备

gn 相关的文件可以从 simple_build 这个例子里面复制,总共需要复制以下几个文件:

  • .gn 这个文件是隐藏文件,很容易漏掉,并且是 gn 执行时最先寻找的文件。这个文件所在的位置就是项目源码的 root 位置。其中的内容就是简单的指定项目的构建 config 具体是那一个。例子中指定的是 build/BUILDCONFIG.gn.
  • build/BUILDCONFIG.gn, build/BUILD.gn 这两个是针对项目的一些设置包括不同操作系统的设置。
  • build/toolchain/BUILD.gn 这个是针对工具链的一些设置。
  • BUILD.gn 这个才是我们一般进行配置的文件,主要是配置需要编译的文件,库,最终的可执行文件等等。注意,不能使用 tab, 只能使用 space.

编译

  1. 使用 gn 生成 ninja 编译脚本。下面这条命令会在 out 目录下生成 test 目录,并且生成的 ninja 脚本也放在这个文件夹里面。
    gn gen out/test
    
  2. 使用 ninja 正式编译。生成的编译文件和最终文件都放在相应的文件夹里面。
    ninja -C out/test/
    

运行和查看

  • 直接运行 out/test 目录下的 hello 就可以执行了。
  • 可以使用 gn desc 来查看相关信息.
    gn desc out/test "//:hello"
    

参考

GN使用笔记

3. gn入门

google gn 构建工具系统命令详解 (guozongling)

GN 快速入门指南

Gn 与 Ninja学习和使用

浅析鸿蒙中的 Gn 与 Ninja(一)

The Ninja build system