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