تعليمات إنشاء LiteRT باستخدام CMake

استخدِم هذا الدليل لإعداد وإنشاء وقت تشغيل LiteRT باستخدام CMake على نظام التشغيل macOS. تغطي التعليمات كلاً من استهدافات الترجمة البرمجية المتقاطعة لنظام التشغيل Android (باستخدام macOS وLinux كجهاز مضيف) وعمليات الإنشاء الأصلية على نظامَي التشغيل macOS وLinux.

خطوات الإنشاء الشائعة

ثبِّت CMake 4.0.1 من: https://github.com/kitware/cmake/releases

تتوقّع جميع الإعدادات المُسبَقة للإنشاء أن تعمل من جذر المستودع:

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)

  1. ثبِّت حزمة Android NDK وصدِّر المسار ليتمكّن CMake من العثور عليه:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. ضبط أدوات flatbuffer من جهة المضيف

    cmake --preset android-arm64;
    
  3. اضبط إصدار 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)"
    
  4. إنشاء LiteRT لنظام التشغيل Android:

    # 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

  1. اضبط الإعداد المُسبَق التلقائي لإنشاء تطبيقات على الكمبيوتر:

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. إنشاء 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 على إمكانية إعادة إنتاج إصدارات x86 من التطبيقات المخصّصة لأجهزة الكمبيوتر المكتبي من خلال تخطّي KleidiAI، ويمكنك ضبطها على 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).

يمكن أن تكون هذه العلامات مباشرةً في إدخالات cmake --preset … ضمن CMakePresets.json، ما يتيح لكل مطوّر في فريقك الحصول على الإعدادات نفسها.

نصائح لتحديد المشاكل وحلّها

  • احذف دليل cmake_build* المقابل إذا غيّرت سلاسل الأدوات أو خيارات الضبط الرئيسية، ثم أعِد تنفيذ خطوة الضبط.
  • افحص CMakeCache.txt داخل كل شجرة إنشاء بحثًا عن مسارات التبعيات التي تم حلّها.