编译子系统通过模块、部件和产品三层配置来实现编译和打包。模块就是编译子系统的一个目标,包括(动态库、静态库、配置文件、预编译模块等)。模块要定义属于哪个部件,一个模块只能归属于一个部件。
以下是常用的模块配置规则:
# C/C++模板
ohos_shared_library #动态库
ohos_static_library #静态库
ohos_executable #可执行文件
ohos_source_set
# 预编译模板:
ohos_prebuilt_executable
ohos_prebuilt_shared_library
ohos_prebuilt_static_library
#hap模板
ohos_hap
ohos_app_scope
ohos_js_assets
ohos_resources
#其他常用模板
#配置文件
ohos_prebuilt_etc
#sa配置
ohos_sa_profile
c/c++模板示例
ohos开头的模板对应的.gni文件路径在:openharmony/build/templates/cxx/cxx.gni
ohos_shared_library示例:
import("//build/ohos.gni")
ohos_shared_library("helloworld") {
sources = ["file"] # 包含的C或C++文件,如:["",""]
include_dirs = [] # 如有重复头文件定义,优先使用前面路径头文件
cflags = [] # 如重复冲突定义,后面的参数优先生效,也就是该配置项中优先生效
cflags_c = []
cflags_cc = []
ldflags = [] # 如重复冲突定义,前面参数优先生效,也就是ohos_template中预制参数优先生效
configs = []
deps = [] # 部件内模块依赖
external_deps = [ # 跨部件模块依赖定义,"part_name:module_name", # 定义格式为 "部件名:模块名称"
] # 这里依赖的模块必须是依赖的部件声明在inner_kits中的模块
output_name = [string] # 模块输出名
output_extension = [] # 模块名后缀
module_install_dir = [] # 缺省在/system/lib64或/system/lib下, 模块安装路径,模块安装路径,从system/,vendor/后开始指定
relative_install_dir = [] # 模块安装相对路径,相对于/system/lib64或/system/lib;如果有module_install_dir配置时,该配置不生效
part_name = [string] # 必选,所属部件名称
output_dir
# Sanitizer配置,每项都是可选的,默认为false/空
sanitize = {
# 各个Sanitizer开关
cfi = [boolean]

文章详细介绍了OpenHarmony编译子系统中模块、部件和产品三层配置的概念,以及C/C++模板的使用,包括动态库、静态库、预编译模板的配置示例。同时,阐述了如何新增模块、编译和打包的步骤,涉及到bundle.json的修改和编译命令的使用。此外,还提到了Sanitizer的配置选项用于代码检查。
最低0.47元/天 解锁文章
9834

被折叠的 条评论
为什么被折叠?



