CMake बिल्ड सिस्टम CMakeLists.txt
फ़ाइलों का इस्तेमाल करता है, जो बिल्ड टारगेट तय करती हैं. आपके डेटा स्टोर करने की जगह के रूट में मौजूद CMakeLists.txt
, बिल्ड ट्री में सबसे ऊपर होता है. साथ ही, यह बिल्ड प्रोसेस में इस्तेमाल किए जाने वाले अलग-अलग टारगेट, विकल्प, और मैक्रो तय करने की अच्छी जगह है.
सबसे पहले, प्रोजेक्ट का नाम और इस्तेमाल किए जा सकने वाले प्लैटफ़ॉर्म की वैल्यू तय की जाती है.
इस उदाहरण में, हमने 0.0.1
के वर्शन के साथ प्रोजेक्ट के नाम को ot-efr32
पर सेट किया है. हम एक वैरिएबल EFR32_PLATFORM_VALUES
भी तय करते हैं, जो ot-efr32
पर काम करने वाले 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 C Maker के विकल्प
C Maker वैरिएबल को तय करके, OpenThread में कई सुविधाएं चालू/बंद/कॉन्फ़िगर की जा सकती हैं.
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
टारगेट का इस्तेमाल करना है. यह टारगेट, फ़र्ज़ी टारगेट है. इसका इस्तेमाल सिर्फ़ कॉन्फ़िगरेशन तय करने के लिए किया जाता है. साथ ही, इसे openthread
में करीब सभी CMake टारगेट से लिंक किया जाता है.
# 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 देखें.