• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 编译构建
2
3## 构建依赖
4
5因为当前 FFRT 编译依赖三方安全库(参见:[third_party_bounds_checking_function](https://gitee.com/openharmony/third_party_bounds_checking_function))的功能,当进行 linux 构建时,需要把三方安全库的代码一并下载到本地,放置目录如下
6
7```plain
8├── resourceschedule_ffrt
9├── third_party
10    └── bounds_checking_function
11```
12
13## 构建参数
14
15常见的构建宏定义说明
16
17| 构建宏             | 含义                                                                                                                                                            |
18| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
19| FFRT_EXAMPLE       | 在 CMakeList 中用于控制是否编译 ffrt examples                                                                                                                   |
20| FFRT_BENCHMARKS    | 在 CMakeList 中用于控制是否编译 ffrt benchmarks                                                                                                                 |
21| FFRT_TEST_ENABLE   | 在 CMakeList 中用于控制是否编译 ffrt unittest cases                                                                                                             |
22| FFRT_CLANG_COMPILE | 在 CMakeList 中用于控制是否使用 clang 编译                                                                                                                      |
23| FFRT_SANITIZE      | 在 CMakeList 中用于控制是否开启 sanitizer 检测                                                                                                                  |
24| FFRT_BBOX_ENABLE   | 在 CMakeList 中用于控制是否开启 FFRT 黑匣子,用于记录发生 crash 时 FFRT 线程、协程的状态                                                                        |
25| FFRT_LOG_LEVEL     | 在 CMakeList&BUILD.gn 中用于动态设置 FFRT 默认日志级别,支持 0-3,依次为 ERROR,WARN,INFO,DEBUG,例如需要打开 DEBUG 及以上级别的日志,设置 `FFRT_LOG_LEVEL=3` |
26
27## Linux 构建
28
29### 编译环境
30
31编译的 Linux 环境需要已安装 CMake(版本 3.10 以上)以及编译器 GCC 或 Clang
32
33### 编译脚本
34
35ffrt 代码根目录下的 CMakeList
36
37### 编译命令
38
39使用 CMake 编译:
40
41```shell
42mkdir -p build
43cd build && cmake .. -DFFRT_EXAMPLE=ON
44cmake --build . -j                      # add `-j` for parallel compilation
45./examples/ffrt_submit                  # run some ffrt examples
46```
47
48或者直接使用代码仓中的 shell 脚本:
49
50```shell
51sh scripts/run_example.sh
52```
53
54### 编译产物
55
56FFRT 样例的可执行文件 ffrt_submit
57
58```plain
59├── resourceschedule_ffrt
60    └── build
61        └──examples
62           └──ffrt_submit
63```
64
65FFRT 动态库文件 libffrt.so
66
67```plain
68├── resourceschedule_ffrt
69    └── build
70        └──src
71           └──libffrt.so
72```
73
74## OpenHarmony 构建
75
76### 编译环境
77
78编译环境部署参考 OpenHarmony 社区官方文档:[编译构建指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-build-all.md)
79
80### 编译脚本
81
82ffrt 代码根目录下的 BUILD.gn
83
84### 编译命令
85
86在官方提供的产品编译命令中指定编译 FFRT 模块,仅需将 build-target 参数设置成 ffrt
87
88以 rk3568 产品为例,进入源码根目录,执行:
89
9064 位
91
92```shell
93./build.sh --product-name rk3568 --target-cpu arm64 --ccache --build-target ffrt
94```
95
9632 位
97
98```shell
99./build.sh --product-name rk3568 --ccache --build-target ffrt
100```
101
102### 开发依赖
103
104```json
105external_deps = [
106  "ffrt:libffrt",
107]
108```
109