室内设计入门从何学起,郴州网站seo外包,亿企搜网站建设,福永专业外贸网站建设公司OpenHarmony下gn相关使用 引言
为了提高OpenHarmony下移植vivante gpu的成功率#xff0c;先得把准备工作做足了#xff0c;这样后续就好搞了。所以本文档的核心工作介绍GN构建工具在OpenHarmony中的常见使用方法#xff0c;指导三方库由cmake或者其它的脚本构建到GN构建的… OpenHarmony下gn相关使用 引言
为了提高OpenHarmony下移植vivante gpu的成功率先得把准备工作做足了这样后续就好搞了。所以本文档的核心工作介绍GN构建工具在OpenHarmony中的常见使用方法指导三方库由cmake或者其它的脚本构建到GN构建的转换 一.GN常用的内置变量
名称描述current_cpu当前工具链的处理器架构current_os当前工具链的操作系统类型current_toolchain表示当前使用的工具链default_toolchain表示默认使用的工具链target_cpu表示目标平台的CPU类型target_os表示目标平台的操作系统类型root_build_dir表示根目录的构建目录root_gen_dir表示根目录的生成目录root_out_dir表示根目录的输出目录target_out_dir表示目标文件的输出目录target_gen_dir表示中间文件的生成目录defines表示当前目标的预定义宏列表include_dirs表示当前目标的头文件搜索路径列表cflags表示当前目标的C语言编译选项列表cxxflags表示当前目标的C语言编译选项列表ldflags表示当前目标的连接选项列表asmflags表示当前目标的汇编语言编译选项列表libs表示当前目标依赖的库文件列表 二.GN常用的内置函数
名称描述assert()断言函数如果条件不成立则会抛出一个异常defined()判断变量是否已经定义exec_script()执行一个Python脚本get_label_info()获取标签信息例如标签的名称、路径、类型等等get_path_info()获取路径信息例如路径是否存在、是否是目录、是否是文件等等group()将一组目标文件组合成一个库文件import()导入其它GN构建文件read_file()读取文件内容read_json()读取JSON格式的文件read_path()读取路径中的内容返回一个字符串列表rebase_path()重新定位路径将路径中的某个部分替换为新的值write_file()写入文件内容template()处理字符串模板将模板中的变量替换为实际的值其功能类似与函数action()定义一个自定义的构建动作通过action调用python脚本完成期望动作action_foreach()针对每个元素执行一个自定义的构建动作executable()定义一个可执行文件shared_library()定义一个动态库static_library()定义一个静态库 三.如何使用
当使用GN进行相关的构建时需要了解如何指定动态库、静态库和可执行文件的构建规则。以下是一个简单的指南介绍如何在GN中指定这些构建规则 3.1 动态库
在GN中可以使用shared_library模板来指定动态库的构建规则创建BUILD.gn文件内容如下 # 指定动态库名称
mylib_name mylib# 指定动态库源文件
mylib_sources [src/foo.cpp,src/bar.cpp,
]# 指定动态库编译选项和链接选项
mylib_cflags [-Wall,
]
mylib_ldflags [-L/usr/local/lib,
]# 指定动态库构建规则
shared_library(mylib_name) {sources mylib_sourcescflags mylib_cflagsldflags mylib_ldflags
}###
3.2 静态库
在GN中可以使用static_library模板来指定静态库的构建规则创建BUILD.gn文件内容如下
# 指定静态库名称# 指定静态库源文件
mylib_sources [src/foo.cpp,src/bar.cpp
]# 指定静态库编译选项
mylib_cflags [-Wall,
]# 指定静态库的构建规则
static_library(mylib_name){sources mylib_sourcescflags mylib_cflags
}###
3.3 可执行文件
在GN中可以使用executable模板来指定可执行文件的构建规则。例如
# 指定可执行文件名称
myapp_name myapp# 指定可执行文件源文件
myapp_sources [src/main.cpp,
]# 指定可执行文件编译选项和链接选项
myapp_cflags [-Wall,
]
myapp_ldflags [-L/usr/local/lib,
]# 指定可执行文件构建规则
executable(myapp_name){sources myapp_sourcescflags myapp_cflagsldflags myapp_ldflags
}
3.4 GN在OpenHarmony上的扩展
OpenHarmony在GN原生模板的基础上进行了功能扩展提供了ohos_shared_library、ohos_static_library、ohos_executable模板在BUILD.gn中import(“//build/ohos.gni”)即可使用ohos_shared_library示例如下
import(//build/ohos.gni)
ohos_shared_library(helloworld) {sources []include_dirs []cflags []cflags_c []cflags_cc []ldflags []configs []deps [] # 部件内模块依赖# 跨部件模块依赖定义# 定义格式为 部件名:模块名称# 这里依赖的模块必须是依赖的部件声明在inner_kits中的模块external_deps [part_name:module_name,]output_name # 可选模块输出名output_extension # 可选模块名后缀module_install_dir # 可选缺省在/system/lib64或/system/lib下 模块安装路径模块安装路径从system/vendor/后开始指定relative_install_dir # 可选模块安装相对路径相对于/system/lib64或/system/lib如果有module_install_dir配置时该配置不生效install_images [] # 可选缺省值system指定模块安装到那个分区镜像中可以指定多个part_name # 必选所属部件名称
}写在最后
好了今天的博客OpenHarmony下gn相关使用就到这里了。总之青山不改绿水长流先到这里了。如果本博客对你有所帮助麻烦关注或者点个赞如果觉得很烂也可以踩一脚谢谢各位了
友情参考:
1.OpenHarmony下cmake转gn指导 2.OpenHarmony标准系统如何添加一个模块 前面两个文档是官方aosp下Build/doc下面的文档 3.gn语法及在鸿蒙的使用