از این راهنما برای پیکربندی و ساخت زمان اجرای LiteRT با CMake در macOS استفاده کنید. این دستورالعملها هم اهداف کامپایل متقابل اندروید (با استفاده از macOS و لینوکس به عنوان دستگاه میزبان) و هم ساختهای بومی macOS و لینوکس را پوشش میدهند.
مراحل ساخت مشترک
CMake 4.0.1 را از آدرس https://github.com/kitware/cmake/releases نصب کنید.
همه پیشتنظیمات ساخت از شما انتظار دارند که از ریشه مخزن کار کنید:
cd ./litert
درختهای ساخت تولید شده تحت cmake_build* قرار دارند. ساختهای موازی را میتوان از طریق -j با تعداد هسته مورد نظر کنترل کرد.
طعمهای ساختمانی موجود
LiteRT از هر دو نوع Build Flavor یعنی Release و Debug پشتیبانی میکند:
| از پیش تعیین شده | پلتفرم | نوع ساخت | دایرکتوری خروجی |
|---|---|---|---|
default | دسکتاپ (مک/لینوکس) | انتشار | cmake_build |
default-debug | دسکتاپ (مک/لینوکس) | اشکالزدایی | cmake_build_debug |
android-arm64 | اندروید arm64 | انتشار | cmake_build_android_arm64 |
android-arm64-debug | اندروید arm64 | اشکالزدایی | cmake_build_android_arm64_debug |
نسخههای آزمایشی -O3 -DNDEBUG برای فایلهای باینری بهینهشده در مرحله تولید استفاده میکنند. نسخههای آزمایشی برای اشکالزدایی با اطلاعات کامل نمادها -O0 -g استفاده میکنند.
کامپایل متقابل اندروید (arm64)
Android NDK را نصب کنید و مسیر را اکسپورت کنید تا CMake بتواند آن را پیدا کند:
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)"ساخت 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 و لینوکس
تنظیمات پیشفرض برای نسخههای دسکتاپ را پیکربندی کنید:
# 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 برای کنترل اینکه کدام زنجیره ابزارها و ویژگیها در targetهای شما کامپایل شوند، استفاده کنید. به عنوان مثال:
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به شما این امکان را میدهند که ابزارهای میزبان کمکی را بدون ویرایشCMakeLists.txtبه هر نصب Clang/GCC ارجاع دهید. -
LITERT_DISABLE_KLEIDIAIبا نادیده گرفتن KleidiAI، نسخههای دسکتاپ x86 را قابل تکثیر نگه میدارد؛ هر زمان که میخواهید نماینده را بستهبندی کنید، آن را رویOFFتنظیم کنید. - همیشه وقتی به مصنوع بهینهشده نیاز دارید،
-DCMAKE_BUILD_TYPE=Release(یا مقدار پیشفرض معادل آن) را وارد کنید. این باعث میشود CMake-O3 -DNDEBUGبرای شما استفاده کند.
تولید کتابخانههای فروشنده با حداقل اندازه
در زمان پیوند، dead-stripping را فعال کنید تا کتابخانههای dispatch با اندازه 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را اجرا کنید. - لینوکس: دستور
-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در هر درخت ساخت برای مسیرهای وابستگی حل شده بررسی کنید.