使用本指南在 macOS 上通过 CMake 配置和构建 LiteRT 运行时。这些说明涵盖 Android 交叉编译目标(使用 macOS 和 Linux 作为主机)以及原生 macOS 和 Linux 构建。
常见构建步骤
从以下网址安装 CMake 4.0.1:https://github.com/kitware/cmake/releases
所有 build 预设都要求您从代码库根目录进行操作:
cd ./litert
生成的 build 树位于 cmake_build* 下。可以通过 -j 控制并行构建,并指定所需的内核数。
可用的 build 变种
LiteRT 支持 Release 和 Debug 两种 build flavor:
| 预设 | 平台 | 构建类型 | 输出目录 |
|---|---|---|---|
default |
桌面设备 (macOS/Linux) | 版本 | cmake_build |
default-debug |
桌面设备 (macOS/Linux) | 调试 | cmake_build_debug |
android-arm64 |
Android arm64 | 版本 | cmake_build_android_arm64 |
android-arm64-debug |
Android arm64 | 调试 | cmake_build_android_arm64_debug |
发布 build 使用 -O3 -DNDEBUG 来优化生产二进制文件。
调试 build 使用 -O0 -g 进行调试,并提供完整的符号信息。
Android (arm64) 交叉编译
安装 Android NDK 并导出路径,以便 CMake 可以找到它:
export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27配置主机端 flatbuffer 工具
cmake --preset android-arm64;使用提供的预设配置 LiteRT Android build,并指向生成的 FlatBuffers 工具:
# For Release build: cmake --preset android-arm64 \ -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)" # For Debug build: cmake --preset android-arm64-debug \ -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)"为 Android 构建 LiteRT:
# For Release build: cmake --build cmake_build_android_arm64 -j # For Debug build: cmake --build cmake_build_android_arm64_debug -j
静态库等制品将输出到相应的 build 目录(cmake_build_android_arm64 或 cmake_build_android_arm64_debug)下。
从 macOS 和 Linux 进行桌面构建
为桌面版 build 配置默认预设:
# For Release build: cmake --preset default # For Debug build: cmake --preset default-debug构建 LiteRT:
# For Release build: cmake --build cmake_build -j # For Debug build: cmake --build cmake_build_debug -j
自定义 build 目标
自定义 CMake build
使用 CMake 选项来控制将哪些工具链和功能编译到目标中。例如:
cmake -S . -B build-release \
-DCMAKE_BUILD_TYPE=Release \
-DLITERT_AUTO_BUILD_TFLITE=ON \
-DLITERT_ENABLE_GPU=OFF \
-DLITERT_ENABLE_NPU=OFF \
-DLITERT_DISABLE_KLEIDIAI=ON \
-DLITERT_HOST_C_COMPILER=/usr/bin/clang \
-DLITERT_HOST_CXX_COMPILER=/usr/bin/clang++
cmake --build build-release --target dispatch_api_Qualcomm_so -j8
LITERT_HOST_C_COMPILER/LITERT_HOST_CXX_COMPILER可让您将辅助主机工具指向任何 Clang/GCC 安装,而无需修改CMakeLists.txt。LITERT_DISABLE_KLEIDIAI通过跳过 KleidiAI 来保持 x86 桌面版 build 的可重现性;如果您想捆绑委托,请将其设置为OFF。- 如果需要优化后的制品,请始终传递
-DCMAKE_BUILD_TYPE=Release(或等效的预设)。这样一来,CMake 就会为您使用-O3 -DNDEBUG。
生成最小尺寸的供应商库
在链接时启用剥离死代码,使调度库的大小与 Bazel 的大小相匹配:
- macOS:添加
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs"(如果需要剥离可执行文件,请对CMAKE_EXE_LINKER_FLAGS_RELEASE执行相同操作)。构建完成后,运行strip -x path/to/libLiteRtDispatch_Qualcomm.dylib。 - Linux:添加
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections"并运行strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so(或将其设为POST_BUILD命令)。
这些标志可以直接放在 CMakePresets.json 中的 cmake --preset … 条目中,这样您团队中的每位开发者都能获得相同的配置。
问题排查提示
- 如果您更改了工具链或主要配置选项,请删除相应的
cmake_build*目录,然后重新运行配置步骤。 - 检查每个 build 树中的
CMakeCache.txt,以查看已解析的依赖项路径。