用于Openharmony设备开发更多信息请访问:Harmonyos.51cto.com,介绍,子系统添加,静态库编译,动态库编译,动态库和静态库调用,设备开发:partA/feature1编译静态库,partB/module编译动态库partA/feature2在可执行程序中调用动态库和静态库2.添加编译代码2.1子系统添加配置文件:build/subsystem_config.json,"sub_example":{"project":"hmf/test","path":"test/example","name":"sub_example","dir":"test"}如果你想自定义目录,test放在测试代码的目录路径下。2.2子模块添加配置文件:productdefine/common/products/Hi3516DV300.json{"product_name":"Hi3516DV300","product_company":"hisilicon","product_device":"hi3516dv300","version":"2.0","type":"standard","product_build_path":"device/hisilicon/build","parts":{..."sub_example:partB":{},"sub_example:partA":{}}}2.3模块partA/feature1目录结构构建配置文件:test\example\partA\feature1\BUILD.gnimport("//build/ohos.gni")config("helloworld1_lib_config"){include_dirs=["include"]}ohos_static_library("libhelloworld1_lib"){output_extension="a"sources=["include/helloworld1.h","src/helloworld1.c"]public_configs=[":helloworld1_lib_config"]part_name="partA"}其中ohos_static_library标准系统是ninja生成的关键静态库。2.4模块partB/模块目录结构配置文件test\example\partB\module\BUILD.gnimport("//build/ohos.gni")config("module_lib_config"){include_dirs=["include"]}ohos_shared_library("module_lib"){sources=["//test/example/partB/module/include/module.h","//test/example/partB/module/src/module.c"]public_configs=[":module_lib_config"]part_name="partB"subsystem_name="sub_example"}其中ohos_shared_library标准体系是ninja生成动态库的关键。2.5动态库和静态库调用模块partA/feature2目录结构编译配置:test\example\partA\feature2\BUILD.gnimport("//build/ohos.gni")ohos_executable("helloworld2_bin"){sources=["src/helloworld2.c"]include_dirs=["include","//test/example/partB/module/include"]deps=[#组件中的模块依赖"../feature1:libhelloworld1_lib",#"//test/example/partB/module:module_lib","../feature3:feature3_etc",]external_deps=["partB:module_lib",]#跨组件依赖,格式为“组件名:模块名”install_enable=true#可执行默认情况下不安装该程序。安装时需要指定part_name="partA"subsystem_name="sub_example"}调用C代码:test\example\partA\feature2\src\helloworld2.c#include"helloworld1.h"//modulepartA/feature1#include"module.h"//模块partB/module#include
