LiterRT CMake বিল্ড নির্দেশাবলী

MacOS-এ CMake-এর সাহায্যে LiterRT রানটাইম কনফিগার এবং তৈরি করতে এই নির্দেশিকাটি ব্যবহার করুন। নির্দেশাবলীতে Android ক্রস-কম্পাইলেশন টার্গেট (হোস্ট মেশিন হিসেবে macOS এবং Linux ব্যবহার করা) এবং নেটিভ macOS এবং Linux বিল্ড উভয়ই অন্তর্ভুক্ত রয়েছে।

সাধারণ নির্মাণ পদক্ষেপ

CMake 4.0.1 ইনস্টল করুন https://github.com/kitware/cmake/releases থেকে

সমস্ত বিল্ড প্রিসেট আশা করে যে আপনি রিপোজিটরি রুট থেকে কাজ করবেন:

cd ./litert

উৎপন্ন বিল্ড ট্রিগুলি cmake_build* এর অধীনে থাকে। সমান্তরাল বিল্ডগুলি -j এর মাধ্যমে পছন্দসই কোর কাউন্ট সহ নিয়ন্ত্রণ করা যেতে পারে।

উপলব্ধ বিল্ড ফ্লেভার

LiterRT রিলিজ এবং ডিবাগ উভয় বিল্ড ফ্লেভার সমর্থন করে:

প্রিসেট প্ল্যাটফর্ম বিল্ড টাইপ আউটপুট ডিরেক্টরি
default ডেস্কটপ (ম্যাকোস/লিনাক্স) মুক্তি cmake_build
default-debug ডেস্কটপ (ম্যাকোস/লিনাক্স) ডিবাগ cmake_build_debug
android-arm64 অ্যান্ড্রয়েড আর্ম৬৪ মুক্তি cmake_build_android_arm64
android-arm64-debug অ্যান্ড্রয়েড আর্ম৬৪ ডিবাগ cmake_build_android_arm64_debug

রিলিজ বিল্ড অপ্টিমাইজড প্রোডাকশন বাইনারিগুলির জন্য -O3 -DNDEBUG ব্যবহার করে। ডিবাগ বিল্ডগুলি সম্পূর্ণ প্রতীক তথ্য সহ ডিবাগিংয়ের জন্য -O0 -g ব্যবহার করে।

অ্যান্ড্রয়েড (arm64) ক্রস-কম্পাইলেশন

  1. অ্যান্ড্রয়েড এনডিকে ইনস্টল করুন এবং পাথটি এক্সপোর্ট করুন যাতে সিমেক এটি খুঁজে পেতে পারে:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. হোস্ট-সাইড ফ্ল্যাটবাফার টুল কনফিগার করুন

    cmake --preset android-arm64;
    
  3. প্রদত্ত প্রিসেট ব্যবহার করে LiterRT অ্যান্ড্রয়েড বিল্ড কনফিগার করুন এবং জেনারেট করা 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. অ্যান্ড্রয়েডের জন্য LiterRT তৈরি করুন:

    # 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 ) অধীনে নির্গত হবে।

ম্যাকওএস এবং লিনাক্স থেকে ডেস্কটপ বিল্ড

  1. ডেস্কটপ বিল্ডের জন্য ডিফল্ট প্রিসেট কনফিগার করুন:

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. LiterRT তৈরি করুন:

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

আপনার বিল্ড টার্গেট কাস্টমাইজ করুন

সিমেক বিল্ড কাস্টমাইজ করা

আপনার টার্গেটে কোন টুলচেইন এবং বৈশিষ্ট্যগুলি কম্পাইল করা হবে তা নিয়ন্ত্রণ করতে 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 আপনাকে CMakeLists.txt সম্পাদনা না করে যেকোনো Clang/GCC ইনস্টলেশনে সহায়ক হোস্ট টুলগুলি নির্দেশ করতে দেয়।
  • LITERT_DISABLE_KLEIDIAI KleidiAI বাদ দিয়ে x86 ডেস্কটপ বিল্ডগুলিকে পুনরুৎপাদনযোগ্য রাখে; যখনই আপনি ডেলিগেট বান্ডেল করতে চান তখন এটি OFF এ সেট করুন।
  • যখন আপনার অপ্টিমাইজ করা আর্টিফ্যাক্টের প্রয়োজন হবে তখন সর্বদা -DCMAKE_BUILD_TYPE=Release (অথবা সমতুল্য প্রিসেট) পাস করুন। এর ফলে CMake আপনার জন্য -O3 -DNDEBUG ব্যবহার করবে।

ন্যূনতম আকারের বিক্রেতা লাইব্রেরি তৈরি করা

লিঙ্কের সময় ডেড-স্ট্রিপিং সক্ষম করুন যাতে ডিসপ্যাচ লাইব্রেরিগুলি ব্যাজেলের আকারের সাথে মেলে:

  • 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 কমান্ড করুন)।

এই ফ্ল্যাগগুলি সরাসরি CMakePresets.json এর cmake --preset … এন্ট্রিতে থাকতে পারে যাতে আপনার দলের প্রতিটি ডেভেলপার একই কনফিগারেশন পায়।

সমস্যা সমাধানের টিপস

  • টুলচেইন বা প্রধান কনফিগারেশন বিকল্প পরিবর্তন করলে সংশ্লিষ্ট cmake_build* ডিরেক্টরিটি মুছে ফেলুন, তারপর কনফিগার ধাপটি পুনরায় চালান।
  • সমাধান করা নির্ভরতা পাথের জন্য প্রতিটি বিল্ড ট্রির ভিতরে CMakeCache.txt পরীক্ষা করুন।