GN 项目搭建与使用教程

GN 项目搭建与使用教程

gnStandalone version of Chromium's GN项目地址:https://gitcode.com/gh_mirrors/gn/gn

1. 项目目录结构及介绍

gn 项目中,目录结构通常包括以下几个关键部分:

  • docs:存放项目的文档,如快速入门指南、参考手册等。
  • src:源代码的主要存储位置,可能包含多个子目录,用于组织不同的功能或组件。
  • out:这是编译过程中的默认产出目录,包含了由 GN 生成的构建文件以及最终的可执行程序和库。
  • build:包含构建系统的相关脚本,例如 gen.py,用于自动生成 GN 文件。
  • test:测试用例或单元测试的存放地。

每个项目的具体目录结构可能会有所不同,但上述是 GN 项目常见的组成部分。

2. 项目的启动文件介绍

在 GN 中,并没有特定的“启动文件”。相反,它使用构建描述文件(通常是 BUILD.gngni 文件)来定义构建规则。当你运行 gn gen 命令时,这些文件会被用来生成一个或多个平台的目标构建配置。

例如,要初始化一个新的构建目录并生成 Ninja 文件,你可以使用以下命令:

cd your_project_root_directory
gn gen out/default

之后,你可以使用 ninja 编译器来构建项目,例如:

ninja -C out/default

这里,out/default 是你的构建目录,default 是默认的构建配置。

3. 项目的配置文件介绍

GN 使用两个主要的配置文件来进行项目设置:

a) gn buildconfig

gn buildconfig 文件是一个特殊类型的 GN 脚本,可以包含全局构建选项和变量。这个文件可以被其他构建描述文件导入,以统一配置整个项目的构建参数。

例如,在 Chromium 或 Fuchsia 等项目中,buildconfig 可能会定义默认的工具链、编译标志等。

import("//build/config/blink.gni")
import("//build/config/compiler.gni")

is_component_build = true
use_rtti = true

b) gn toolchain

toolchain 文件定义了如何编译源代码的规则,包括使用的编译器、链接器和其他工具。一个项目可以有多个工具链,每个工具链对应不同的目标平台或编译需求。

例如,gn toolchain 可能会像这样定义:

toolchain("my_toolchain") {
    cflags = [ "-O2", "-Wall" ]
    cxxflags = cflags + [ "-std=c++17" ]
    ldflags = []

    # 指定编译器路径
    cc = "/path/to/your/gcc"
    cxx = "/path/to/your/g++"
    ar = "/path/to/your/ar"

    # 更多工具链配置...
}

完成上述步骤后,你就可以在 GN 文件中通过工具链名称来选择使用哪个构建规则。

请注意,上述代码仅为示例,实际的 buildconfigtoolchain 配置将取决于具体项目的需求和约定。


此教程涵盖了 GN 项目的基本目录结构、启动过程(构建描述)以及配置文件的简介。为了更深入地了解和使用 GN,建议查看项目文档和参考资料,尤其是对于特定项目的定制化设置。

gnStandalone version of Chromium's GN项目地址:https://gitcode.com/gh_mirrors/gn/gn

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余桢钟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值