본문으로 건너뛰기

CMake, Kconfig 및 컴포넌트 모델

개요

TuyaOpen은 실제 컴파일에 CMakeNinja를 사용하고, Kconfig(tos.py config)로 빌드할 항목을 결정합니다. 이 페이지에서는 라이브러리의 위치, SDK 루트와 프로젝트 CMakeLists.txt의 관계, 보드 또는 컴포넌트를 확장할 때 확인할 위치를 설명합니다.

대상 독자: 보드를 포팅하거나 컴포넌트를 추가하거나 링크 오류를 디버깅하는 개발자

사전 요구 사항

요구 사항

  • CMake 개념(add_subdirectory, target_link_libraries, 정적 라이브러리)에 대한 이해
  • 경로 확인에 사용할 로컬 TuyaOpen 트리(TuyaOpen/은 SDK 루트, <project>/는 앱 또는 예제 디렉터리)

구성에서 CMake까지의 흐름

  1. 프로젝트의 **app_default.config**가 Kconfig 선택 사항을 기록합니다.
  2. tos.py config / **tos.py build**가 해당 선택 사항을 TuyaOpen/src, TuyaOpen/boards 및 프로젝트의 Kconfig 트리와 병합하여 **<project>/.build/cache/**에 데이터를 생성합니다.
  3. CMake가 프로젝트 이름, 플랫폼, 보드 및 칩 변수를 받아 올바른 툴체인, 보드 BSP 및 컴포넌트를 선택합니다.
  4. Kconfig 출력이 CMake 계층에서 사용되어 CONFIG_* 옵션이 컴파일된 소스 및 정의와 일치하도록 합니다.

이 페이지는 구조와 책임에 집중합니다. 빌드 단계와 스크립트 진입점은 컴파일 가이드를 참고하세요.

SDK 최상위 CMake 구조

SDK 루트의 **TuyaOpen/CMakeLists.txt**가 다음을 조정합니다.

  • TuyaOpen/platform/<platform>/의 툴체인 및 플랫폼 CMake 조각
  • TuyaOpen/src/<component>/컴포넌트(일반적으로 각 컴포넌트에 CMakeLists.txt가 있음)
  • TuyaOpen/boards/<platform>/<board>/보드 지원
  • 프로젝트의 CMakeLists.txt: 앱 정적 라이브러리를 빌드하고 통합 SDK 라이브러리에 링크

요약하면 src/ 컴포넌트를 순회하고 필요하면 boards/<platform>/<board>/를 추가한 뒤 libtuyaos.a를 생성합니다. 이후 include(${TOS_PROJECT_ROOT}/CMakeLists.txt)로 프로젝트를 포함하고 대상 tuyaapp을 해당 라이브러리에 연결합니다.

링크되는 항목

산출물일반적인 역할
libtuyaos.asrc/의 활성화된 SDK 컴포넌트와 설정된 보드 연결 코드로 생성되는 정적 라이브러리
libtuyaapp.a (대상 tuyaapp)프로젝트 CMakeLists.txt에 지정한 애플리케이션 소스
플랫폼 스크립트CMake/Ninja 후 플랫폼별 패키징 또는 플래시 레이아웃을 수행하는 platform/<platform>/build_example.py

정확한 대상 이름과 플래그는 플랫폼에 따라 조금 다를 수 있습니다. 해당 플랫폼의 CMake와 컴파일 가이드를 기준으로 판단하세요.

프로젝트 디렉터리와 SDK 루트

위치역할
TuyaOpen/SDK: src/, boards/, platform/, 루트 CMakeLists.txt, tos.py
<project>/ (예: apps/... 또는 examples/...)앱: CMakeLists.txt, app_default.config, Kconfig, 선택적 config/*.config, 빌드 출력 .build/

일반적인 앱 빌드에서 tos.pyTuyaOpen/ 단독이 아니라 항상 **<project>/**에서 실행합니다.

Ninja 및 .build

CMake는 Ninja를 생성기로 사용합니다. 빌드 트리는 **<project>/.build/**에 있으며 바이너리는 .build/bin/, 라이브러리는 .build/lib/, 캐시는 .build/cache/에 있습니다. .build/를 커밋하지 마세요.

시스템 확장

  • 새 SDK 컴포넌트TuyaOpen/src/<name>/CMakeLists.txt와 Kconfig 연결을 추가하고 기존 작은 컴포넌트를 템플릿으로 사용합니다.
  • 새 보드 또는 사용자 지정 보드TuyaOpen/boards/<platform>/<board>/에 CMake와 Kconfig를 포함한 BSP를 추가합니다. 새 보드컴파일 가이드를 참고하세요.
  • 앱만 변경 — 일반적으로 앱 트리의 프로젝트 CMakeLists.txt, app_default.config 또는 Kconfig만 수정합니다. .build/cache/의 생성 파일은 수정하지 마세요.

기대 결과

Kconfig 심볼포함된 소스CMake 대상최종 펌웨어의 경로를 추적하고 각 계층을 변경해야 할 트리(src, boards 또는 프로젝트)를 판단할 수 있습니다.

참고