Petunjuk Build CMake LiteRT

Gunakan panduan ini untuk mengonfigurasi dan membangun runtime LiteRT dengan CMake di macOS. Petunjuk ini mencakup target kompilasi silang Android (menggunakan macOS dan Linux sebagai mesin host) serta build macOS dan Linux native.

Langkah-Langkah Build Umum

Instal CMake 4.0.1 dari: https://github.com/kitware/cmake/releases

Semua preset build mengharapkan Anda bekerja dari root repositori:

cd ./litert

Pohon build yang dihasilkan berada di cmake_build*. Build paralel dapat dikontrol melalui -j dengan jumlah inti yang diinginkan.

Varian Build yang Tersedia

LiteRT mendukung varian build Rilis dan Debug:

Preset Platform Jenis Build Direktori Output
default Desktop (macOS/Linux) Rilis cmake_build
default-debug Desktop (macOS/Linux) Debug cmake_build_debug
android-arm64 Android arm64 Rilis cmake_build_android_arm64
android-arm64-debug Android arm64 Debug cmake_build_android_arm64_debug

Build Rilis menggunakan -O3 -DNDEBUG untuk biner produksi yang dioptimalkan. Build Debug menggunakan -O0 -g untuk men-debug dengan informasi simbol lengkap.

Kompilasi Silang Android (arm64)

  1. Instal Android NDK dan ekspor jalur agar CMake dapat menemukannya:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. Mengonfigurasi alat flatbuffer sisi host

    cmake --preset android-arm64;
    
  3. Konfigurasi build Android LiteRT menggunakan preset yang disediakan dan arahkan ke alat FlatBuffers yang dihasilkan:

    # 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)"
    
  4. Membangun LiteRT untuk Android:

    # For Release build:
    cmake --build cmake_build_android_arm64 -j
    
    # For Debug build:
    cmake --build cmake_build_android_arm64_debug -j
    

Artefak seperti library statis akan dikeluarkan di direktori build yang sesuai (cmake_build_android_arm64 atau cmake_build_android_arm64_debug).

Build Desktop dari macOS dan Linux

  1. Konfigurasi preset default untuk build Desktop:

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. Membangun LiteRT:

    # For Release build:
    cmake --build cmake_build -j
    
    # For Debug build:
    cmake --build cmake_build_debug -j
    

Menyesuaikan target build

Menyesuaikan Build CMake

Gunakan opsi CMake untuk mengontrol toolchain dan fitur mana yang dikompilasi ke dalam target Anda. Mis.:

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 memungkinkan Anda mengarahkan alat host helper ke penginstalan Clang/GCC mana pun tanpa mengedit CMakeLists.txt.
  • LITERT_DISABLE_KLEIDIAI membuat build desktop x86 dapat direproduksi dengan melewati KleidiAI; setel ke OFF setiap kali Anda ingin memaketkan delegasi.
  • Selalu teruskan -DCMAKE_BUILD_TYPE=Release (atau preset yang setara) saat Anda memerlukan artefak yang dioptimalkan. Dengan demikian, CMake akan menggunakan -O3 -DNDEBUG untuk Anda.

Membuat Library Vendor Berukuran Minimum

Pada waktu penautan, aktifkan penghapusan kode yang tidak digunakan agar library pengiriman sesuai dengan ukuran Bazel:

  • macOS: tambahkan -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (dan hal yang sama untuk CMAKE_EXE_LINKER_FLAGS_RELEASE jika Anda ingin file yang dapat dieksekusi dihapus). Setelah membangun, jalankan strip -x path/to/libLiteRtDispatch_Qualcomm.dylib.
  • Linux: tambahkan -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" dan jalankan strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so (atau jadikan perintah POST_BUILD).

Flag ini dapat langsung berada di entri cmake --preset … dalam CMakePresets.json sehingga setiap developer di tim Anda mendapatkan konfigurasi yang sama.

Tips Pemecahan Masalah

  • Hapus direktori cmake_build* yang sesuai jika Anda mengubah toolchain atau opsi konfigurasi utama, lalu jalankan kembali langkah konfigurasi.
  • Periksa CMakeCache.txt di dalam setiap pohon build untuk jalur dependensi yang telah diselesaikan.