يعتمد نظام إنشاء 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}")
خيارات CMake في OpenThread
يمكن تفعيل ميزات مختلفة في 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.