Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

CMake 규칙 정의

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 플랫폼 abstration 레이어 소스 코드의 위치 폴더입니다. third_party 폴더는 제 3 자 코드가 포함되어 있습니다.

당신은 REPO 샘플 응용 프로그램이 포함 생성하려는 경우 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-efr32OT-nrf528xx을 .