OpenHarmony开发者论坛

标题: 菜鸟求助,这些BUILD.gn之间的关系是什么样子的? [打印本页]

作者: zhqi    时间: 2024-1-5 12:59
标题: 菜鸟求助,这些BUILD.gn之间的关系是什么样子的?
从官网看了一些代码,但是不太理解这么多BUILD.gn之间的关系,比如
applications\sample\wifi-iot\app\BUILD.gn

applications\sample\wifi-iot\app\startup\BUILD.gn



作者: dragon    时间: 2024-1-5 18:36
标题: 菜鸟求助,这些BUILD.gn之间的关系是什么样子的?
BUILD.gn之间通常是以目录的层级结构进行组织的,也就是上层BUILD.gn引用到下层BUILD.gn,形成一种树形结构。
当然这里说的是通常,因为在OpenHarmony的编译架构中,有一些BUILD.gn就会比较特殊,会从另一个位置直接引用其他位置的BUILD.gn。

作者: 润开鸿_梁开祝    时间: 2024-1-10 22:11
建议你先去了解一下 Gn 和 Ninja 这个构建系统的一些基础概念,也可以去:
https://ost.51cto.com/posts/4070
https://gitee.com/liangkzgitee/GnProjs
跑一下 build+ninja 的HelloWorld程序,做一下验证。

回到你提到的例子:
applications\sample\wifi-iot\app\BUILD.gn                 【1】
applications\sample\wifi-iot\app\startup\BUILD.gn    【2】

在文件【1】中,依赖/引用 到文件【2】的编译目标时,文件【1】内可以使用‘相对路径’或者‘绝对路径’两种方式描述它对【2】的使用。这里需要你了解这两个路径概念,以及代码根目录“//”概念和其他相关的概念。

使用相对路径,是相对于文件【1】的当前路径,如:“startup:xxx”或“./startup:xxx”, 这里的 “xxx”就是 startup/BUILD.gn 文件里描述的编译目标;

使用绝对路径,则是相对于代码跟目录“//”的路径,如“//applications/sample/wifi-iot/app/startup:xxx”, 这里的 “xxx”就是 startup\BUILD.gn 文件里描述的编译目标;

如果你想在 //applications/sample/wifi-iot/app/BUILD.gn 中依赖/引用 很远的地方(比如 //vendor/hihope/aaaa/bbbb/BUILD.gn)的编译目标,也是同样的使用相对路径和绝对路径,都是可以的。




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5