請參閱本指南,瞭解如何在 macOS 上使用 CMake 設定及建構 LiteRT 執行階段。這些說明涵蓋 Android 跨編譯目標 (使用 macOS 和 Linux 做為主機) 和原生 macOS 與 Linux 建構作業。
常見的建構步驟
從 https://github.com/kitware/cmake/releases 安裝 CMake 4.0.1
所有建構預設集都希望您從存放區根目錄工作:
cd ./litert
產生的建構樹狀結構位於 cmake_build* 下方。您可以透過 -j 控制並行建構作業,並指定所需的核心數量。
可用的建構版本
LiteRT 支援「發布」和「偵錯」建構風味:
| 預設 | 平台 | 建構類型 | 輸出內容目錄 |
|---|---|---|---|
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 |
發布版本會使用 -O3 -DNDEBUG,產生經過最佳化的正式版二進位檔。
偵錯版本會使用 -O0 -g 進行偵錯,並提供完整的符號資訊。
Android (arm64) 跨平台程式碼編譯
安裝 Android NDK 並匯出路徑,讓 CMake 能夠找到 NDK:
export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27設定主機端 Flatbuffer 工具
cmake --preset android-arm64;使用提供的預設設定設定 LiteRT Android 建構作業,並指向產生的 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
靜態程式庫等構件會發出至對應的建構目錄 (cmake_build_android_arm64 或 cmake_build_android_arm64_debug)。
從 macOS 和 Linux 建構桌面版
設定電腦版建構作業的預設預設集:
# 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
自訂建構目標
自訂 CMake 建構作業
使用 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 電腦版建構作業可重現;如要將委派項目套件化,請將其設為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*目錄,然後重新執行設定步驟。 - 檢查每個建構樹狀結構中的
CMakeCache.txt,瞭解已解決的依附元件路徑。