LiteRT CMake Derleme Talimatları

macOS'te CMake ile LiteRT çalışma zamanını yapılandırmak ve oluşturmak için bu kılavuzu kullanın. Talimatlar hem Android çapraz derleme hedeflerini (ana makine olarak macOS ve Linux kullanılarak) hem de yerel macOS ve Linux derlemelerini kapsar.

Sık Kullanılan Derleme Adımları

CMake 4.0.1'i şu adresten yükleyin: https://github.com/kitware/cmake/releases

Tüm derleme ön ayarları, depodaki kök dizinden çalışmanızı gerektirir:

cd ./litert

Oluşturulan derleme ağaçları cmake_build* altında bulunur. Paralel derlemeler, istenen çekirdek sayısı ile -j üzerinden kontrol edilebilir.

Kullanılabilir Derleme Türleri

LiteRT, hem Release hem de Debug derleme türlerini destekler:

Ön ayarlı Platform Derleme Türü Çıkış Dizini
default Masaüstü (macOS/Linux) Serbest bırak cmake_build
default-debug Masaüstü (macOS/Linux) Hata ayıkla cmake_build_debug
android-arm64 Android arm64 Serbest bırak cmake_build_android_arm64
android-arm64-debug Android arm64 Hata ayıkla cmake_build_android_arm64_debug

Yayın derlemelerinde, optimize edilmiş üretim ikilileri için -O3 -DNDEBUG kullanılır. Hata ayıklama derlemeleri, tam sembol bilgileriyle hata ayıklama için -O0 -g kullanır.

Android (arm64) Çapraz Derleme

  1. Android NDK'yı yükleyin ve CMake'in bulabilmesi için yolu dışa aktarın:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. Ana makine tarafındaki FlatBuffer araçlarını yapılandırma

    cmake --preset android-arm64;
    
  3. Sağlanan hazır ayarı kullanarak LiteRT Android derlemesini yapılandırın ve oluşturulan FlatBuffers araçlarını işaret edin:

    # 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. Android için LiteRT'yi oluşturun:

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

Statik kitaplıklar gibi yapılar, ilgili derleme dizini (cmake_build_android_arm64 veya cmake_build_android_arm64_debug) altında yayınlanır.

macOS ve Linux'ta masaüstü derlemesi

  1. Masaüstü derlemeleri için varsayılan hazır ayarı yapılandırın:

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. LiteRT'yi oluşturma:

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

Derleme hedefinizi özelleştirme

CMake Derlemelerini Özelleştirme

Hedeflerinizde hangi araç zincirlerinin ve özelliklerin derleneceğini kontrol etmek için CMake seçeneklerini kullanın. Örneğin:

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, yardımcı ana makine araçlarını CMakeLists.txt dosyasını düzenlemeden herhangi bir Clang/GCC yüklemesine yönlendirmenize olanak tanır.
  • LITERT_DISABLE_KLEIDIAI, KleidiAI'yı atlayarak x86 masaüstü derlemelerinin yeniden üretilmesini sağlar. Temsilciyi paketlemek istediğinizde OFF olarak ayarlayın.
  • Optimize edilmiş öğeye ihtiyacınız olduğunda her zaman -DCMAKE_BUILD_TYPE=Release (veya eşdeğer hazır ayar) iletin. Bu, CMake'in sizin için -O3 -DNDEBUG kullanmasını sağlar.

Minimum Boyutlu Tedarikçi Kitaplıkları Üretme

Bağlantı sırasında, gönderme kitaplıklarının Bazel'in boyutuyla eşleşmesi için dead-stripping'i etkinleştirin:

  • macOS: add -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (ve CMAKE_EXE_LINKER_FLAGS_RELEASE için de aynısı geçerlidir, eğer yürütülebilir dosyaların kaldırılmasını istiyorsanız). Derleme işleminden sonra şu komutu çalıştırın: strip -x path/to/libLiteRtDispatch_Qualcomm.dylib.
  • Linux: -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" ekleyin ve strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so komutunu çalıştırın (veya POST_BUILD komutu haline getirin).

Bu işaretler, cmake --preset … girişlerinde doğrudan bulunabilir. Böylece ekibinizdeki her geliştirici aynı yapılandırmaya sahip olur.CMakePresets.json

Sorun gidermeyle ilgili ipuçları

  • Araç zincirlerini veya önemli yapılandırma seçeneklerini değiştirirseniz ilgili cmake_build* dizinini silin, ardından yapılandırma adımını yeniden çalıştırın.
  • Çözülen bağımlılık yolları için her derleme ağacının içindeki CMakeCache.txt öğesini inceleyin.