الاطّلاع على المصدر على GitHub
يعتمد نظام إنشاء CMake على ملفات CMakeLists.txt
التي تحدد أهداف الإصدار. إنّ العلامة CMakeLists.txt
في جذر المستودع هي أعلى شجرة الإصدار، وهي مكان جيد لبدء تحديد الاستهدافات والخيارات ووحدات الماكرو المختلفة المستخدمة في عملية الإنشاء.
القيم الأولى التي يجب تحديدها هي اسم المشروع والأنظمة الأساسية المتوافقة.
في هذا المثال، تم ضبط اسم المشروع على ot-efr32
بإصدار 0.0.1
. نعرّف أيضًا المتغيّر EFR32_PLATFORM_VALUES
الذي يمثّل قائمة تضم efr32
أنظمة أساسية متوافقة مع ot-efr32
. في هذا المثال، عرّفنا منصّات متعدّدة، ولكن لا بأس في إنشاء منصّة واحدة للمتغيّر _PLATFORM_VALUES
.
cmake_minimum_required(VERSION 3.10.2) project(ot-efr32 VERSION 0.0.1) set(EFR32_PLATFORM_VALUES "efr32mg1" "efr32mg12" "efr32mg13" "efr32mg21" )
يتضمّن ملف CMakeLists.txt
عملية تحقُّق تُلغي الإصدارات التي تم إطلاقها على أنظمة أساسية غير متوافقة.
set_property(CACHE EFR32_PLATFORM PROPERTY STRINGS ${EFR32_PLATFORM_VALUES}) if(NOT EFR32_PLATFORM IN_LIST EFR32_PLATFORM_VALUES) message(FATAL_ERROR "Please select a supported platform: ${EFR32_PLATFORM_VALUES}") endif()
المتغير التالي الذي يجب تحديده هو OT_PLATFORM_LIB
. ويتم استخدام هذا المتغير بواسطة أمثلة تطبيقات OpenThread للربط بالنظام الأساسي.
set(OT_PLATFORM_LIB "openthread-${EFR32_PLATFORM}")
خيارات OpenThread CMake
يمكن تفعيل/إيقاف/ضبط ميزات مختلفة في OpenThread عن طريق تحديد متغيرات CMake.
على النظام الأساسي ot-efr32
، يتم استخدام مكتبة mbedTLS خارجية silabs-mbedtls
.
set(OT_BUILTIN_MBEDTLS_MANAGEMENT OFF CACHE BOOL "disable builtin mbedtls management" FORCE) set(OT_EXTERNAL_MBEDTLS "silabs-mbedtls" CACHE STRING "use silabs mbedtls" FORCE) set(OT_MBEDTLS ${OT_EXTERNAL_MBEDTLS})
تحديد أدلة الإخراج
يمكن ضبط دليل الإخراج لملفات الهدف المختلفة باستخدام المتغيّرات الواردة أدناه.
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
إضافة OpenThread إلى شجرة الإصدار
لتضمين الوحدة الفرعية openthread
في شجرة الإصدار:
add_subdirectory(openthread)
تمرير خصائص الإصدار إلى OpenThread
يسمح لك القسم الأخير من هذا الملف بتحديد سمات الإصدار (مثل التعريفات والخيارات والأدلة)، والتي قد تريد إضافتها إلى شجرة إصدار openthread
وإلى مكتبات الأنظمة الأساسية.
هناك طريقة سهلة لإضافة هذه التعريفات وهي باستخدام هدف ot-config
. هذا الهدف هو هدف زائف يُستخدم فقط بغرض تحديد الإعدادات ويتم ربطه بجميع أهداف CMake السابقة تقريبًا في openthread
.
# Define config filename macros target_compile_definitions(ot-config INTERFACE OPENTHREAD_CONFIG_FILE="openthread-core-efr32-config.h" OPENTHREAD_PROJECT_CORE_CONFIG_FILE="openthread-core-efr32-config.h" OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE="openthread-core-efr32-config-check.h" ) # Disable -Wshadow and -Wpedantic target_compile_options(ot-config INTERFACE -Wno-shadow -Wno-pedantic ) # Add platform dirs to "include" dirs target_include_directories(ot-config INTERFACE ${PROJECT_SOURCE_DIR}/src/src ${PROJECT_SOURCE_DIR}/src/${EFR32_PLATFORM} ${PROJECT_SOURCE_DIR}/src/${EFR32_PLATFORM}/crypto )
إضافة الأدلة الفرعية إلى شجرة الإصدار
بعد أن تم تحديد الإعدادات ذات المستوى الأعلى، حان الوقت لإضافة أدلة فرعية أخرى إلى العرض التدرّجي للإصدار.
المجلد src
هو المكان الذي يوجد فيه رمز مصدر طبقة التجريد للنظام الأساسي. يحتوي المجلد third_party
على أي رمز برمجي تابع لجهة خارجية.
إذا أردت تضمين نماذج من التطبيقات في الريبو، أنشئ مجلد examples
وأضِفه إلى شجرة الإصدار أيضًا.
add_subdirectory(src) add_subdirectory(third_party) # Optional add_subdirectory(examples)
دليل src
هذا هو قلب المستودع وحيث يتم تنفيذ طبقة التجريد للنظام الأساسي. وهي تتضمن أيضًا بعض الملفات الأخرى المطلوبة.
src/arm-none-eabi.cmake
هذا ملف سلسلة أدوات يحدد بعض المتغيرات التي يستخدمها CMake في عملية الإصدار. ننصحك بنسخ النسخة ot-efr32
من الملف وتعديلها ليلائم نظامك الأساسي.
src/CMakeLists.txt
هذا هو المكان الذي تقوم فيه بتعريف ملفات المصدر وتضمين المسارات وعلامات المحول البرمجي لمكتبة النظام الأساسي. من الأمثلة الجيدة على هذا الملف بالنسبة إلى المستودع الذي لا يتوافق إلا مع نظام أساسي واحد مصدره ot-cc2538
.
يمكن دعم أنظمة أساسية متعددة في مستودع واحد، ويمكن استخدام مستودعات متعدّدة من النظام الأساسي كمرجع. يمكنك الاطّلاع على ot-efr32 وot-nrf528xx.