• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 将三方库集成到OpenHarmony的方法
2
3## 场景说明
4
5为了实现移植的三方库被其它子系统或者应用调用,将需移植的三方库Cmake或make编译方式转换为BUILD.gn编译方式之后,需要将其源码编译集成到OpenHarmony系统中,使其生成动态库,供OpenHarmony应用层调用。本文介绍如何将需移植的三方库源码利用OpenHarmony编译系统生成动态库供应用层调用。
6
7## 修改生成的BUILD.gn文件(有-a参数时)
8
91、若待转换三方库中需要引用其它三方库时,需要填写-a参数,具体填写方法可参考FAQ中三方库转换时问题解决方法,详细FAQ内容可左键单击以下链接了解:[FAQ](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/cmake2gn/docs/guide/FAQ.md);在build_tmp下生成的BUILD.gn中,需要修改deps依赖,根据-a参数中填写的依赖在OpenHarmony源码third_party下所有BUILD.gn中查找依赖的库的定义,然后复制库的路径,在生成的BUILD.gn文件中的deps中修改依赖的库的路径。例如:转换curl三方库时依赖ssl和crypto库:
10
11-a参数中包含的依赖:
12
13```
14(-DOPENSSL_INCLUDE_DIR=/home/kaihong1/Openharmony1207/third_party/boringssl/src/include,-DOPENSSL_CRYPTO_LIBRARY=/home/kaihong1/Openharmony1207/out/hi3516dv300/developtools/profiler/libcrypto.z.so,-DOPENSSL_SSL_LIBRARY=/home/kaihong1/Openharmony1207/out/hi3516dv300/developtools/profiler/libssl.z.so)
15```
16
17生成的BUILD.gn文件(build_tmp/lib/BUILD.gn):
18
19```
20 ...
21 deps = [
22        "//out/hi3516dv300/developtools/profiler/libssl.z.so",
23        "//out/hi3516dv300/developtools/profiler/libcrypto.z.so"
24    ]
25 ...
26```
27
28修改为:
29
30```
31 ...
32 deps = [
33         "//third_party/boringssl:ssl",
34         "//third_party/boringssl:crypto"
35    ]
36 ...
37```
38
39同理修改build_tmp/src下的BUILD.gn文件。
40
41## 通过其它子系统调用
42
431、此处以OpenHarmony/foundation/multimodalinput组件调用mbedtls-development组件为例。在~/multimodalinput/input/BUILD.gn文件中添加mbedtls-development依赖,其中“//third_party/mbedtls-development/build_tmp”为mbedtls-development组件BUILD.gn文件所在相对路径;“all_targets”为mbedtls-development组件BUILD.gn文件中group名称。具体书写如下所示:
44
45```
46harmony@Ubuntu-64:~$ cd /home/harmony/OpenHarmony/foundation/multimodalinput/input/
47	harmony@Ubuntu-64:~/OpenHarmony/foundation/multimodalinput/input$ cat BUILD.gn
48	......
49	ohos_shared_library("mmi_uinject") {
50	......
51  	  deps = [
52    	"//drivers/peripheral/input/hal:hdi_input",
53    	"//utils/native/base:utils",
54    	"//third_party/mbedtls-development/build_tmp:all_targets",
55  	  ]
56	......
57```
58
592、进入~/OpenHarmony目录下,通过ninja形式编译,编译命令及编译结果如下:
60
61```
62ninja -C out/khdvk_rk3568_a all_targets
63```
64
65![](https://gitee.com/openharmony/napi_generator/raw/master/src/cli/cmake2gn/docs/figures/ninja_build_success.png)
66
673、编译成功后,会生成mbedtls-development相关动态库文件或可执行程序,生成文件及路径如下所示:
68
69![](https://gitee.com/openharmony/napi_generator/raw/master/src/cli/cmake2gn/docs/figures/generate_file.png)
70
71## 总结
72
73根据以上操作,即可将三方库集成到OpenHarmony源码中。
74