1## 关于deps、external_deps的使用
2
3在添加一个模块的时候,需要在BUILD.gn中声明它的依赖,为了便于后续处理部件间依赖关系,我们将依赖分为两种——部件内依赖deps和部件间依赖external_deps。
4
5### 依赖分类:
6
7**部件内依赖:** 现有模块module1属于部件part1,要添加一个属于部件part1的模块module2,module2依赖于module1,这种情况就属于部件内依赖。
8
9**部件间依赖:** 现有模块module1属于部件part1,要添加一个模块module2,module2依赖于module1,module2属于部件part2。模块module2与模块module1分属于两个不同的部件,这种情况就属于部件间依赖。
10
11部件内依赖使用deps,部件间依赖使用external_deps。
12
13### 示例:
14
15**部件内依赖示例:**
16
17```gn
18import("//build/ohos.gni")
19ohos_shared_library("module1") {
20  ……
21  part_name = "part1"   # 必选,所属部件名称
22}
23```
24
25```
26import("//build/ohos.gni")
27ohos_shared_library("module2") {
28  ……
29  deps = [
30    "module1的gn target",
31    ……
32    ]  			        # 部件内模块依赖
33  part_name = "part1"   # 必选,所属部件名称
34}
35```
36
37部件内依赖和一般的依赖一样
38
39**部件间依赖示例:**
40
41```
42import("//build/ohos.gni")
43ohos_shared_library("module1") {
44  ……
45  part_name = "part1"   # 必选,所属部件名称
46}
47```
48
49模块1所属部件的ohos.build文件
50
51```
52{
53  "subsystem":"子系统名称",
54  "parts": {
55    "part1": {
56      "inner_kits": [
57        {
58          "header": {
59            "header_base": "头文件所属目录",	# 头文件所属目录
60            "header_files": [
61                "头文件名"
62              ]								 # 头文件名列表
63            },
64            "name": "module1的gn target"
65        },
66      ],
67      ……
68    }
69  }
70}
71```
72
73```
74import("//build/ohos.gni")
75ohos_shared_library("module2") {
76  ……
77  external_deps = [
78    "part1:module1",
79    ……
80  ]  			        # 部件间模块依赖,这里依赖的模块必须是依赖的部件声明在inner_kits中的模块
81  part_name = "part2"   # 必选,所属部件名称
82}
83```
84
85注意:部件间依赖要写在external\_deps里面,格式为”部件名:模块名"的形式,并且依赖的模块必须是依赖的部件声明在inner_kits中的模块。
86
87