-
ESP-IDF components 참조 cMakeLists (vscode)소프트웨어 2023. 3. 25. 00:51
#esp32 윈도우 vscode 환경
#선행(필수) ESP-IDF 윈도우 개발환경 세팅(vscode)
#선행(필수) ESP-IDF 외부 폴더에서 예제 파일 실행(vscode)
#선행(필수) ESP-IDF .c .h 참조 cMakeLists (vscode)
1) components 참조
ESP-IDF .c .h 참조 cMakeLists (vscode) 의 최종 예제 파일을 불러 옵니다.
main.c에서 plus.c 를 참조하기 위해서는 #include "plus.h" 가 필요 했습니다.
#include "plus.h" 를 포함하기 위해서는 CMakeLists.txt 를 수정해야 했습니다.그런데 main.c 에서 #include "driver/gpio.h" 라는 헤더 파일을 포함하면
CMakeLists.txt의 수정 없이도 오류 없이 컴파일 됩니다.
이 이유는 ESP-IDF 빌드 시스템이 main 폴더의 파일을 빌드할 때는
C:\Espressif\frameworks\esp-idf\components\ 의 하위 경로를 참조하기 때문입니다.
모든 하위 경로를 다 참조하지는 않고, components\ 의 하위 경로 중에서
폴더명이 include 인 폴더만 참조를 합니다.
include 의 상위 경로나 하위 경로는 참조하지 않습니다.
예를 들어, gpio.h 헤더 파일은
C:\Espressif\frameworks\esp-idf\components\driver\include\driver\gpio.h 경로에 있습니다.
gpio.h를 main.c에 포함하기 위해서는 #include "driver/gpio.h" 라고 작성을 해야 합니다.
gpio.h 파일이 include 안의 driver 폴더 안에 있기 때문입니다.
#include "gpio.h" 이렇게 작성을 하면 컴파일 에러가 발생 합니다.
nvs.h 헤더 파일은 C:\Espressif\frameworks\esp-idf\components\nvs_flash\include\nvs.h 경로에 있습니다.
main.c 에서 #include "nvs.h" 이렇게 작성해 주면 됩니다.
main 폴더 이외의 경로에 있는 소스 코드는,
C:\Espressif\frameworks\esp-idf\components\ 의 하위 경로를 참조 하지 않습니다.
plus.c에서 #include "driver/gpio.h" 이렇게 작성하면 컴파일 에러가 발생합니다.
위의 plus.c에서 C:\Espressif\frameworks\esp-idf\components\ 의 특정 헤더 파일을 참조하기 위해서는,
components/plus/CMakeLists.txt 를 아래와 같이 수정해 주어야 합니다.idf_component_register(SRCS "plus.c" INCLUDE_DIRS "." REQUIRES // 추가 "driver" // 추가 )
plus.c 가 main.c 처럼 C:\Espressif\frameworks\esp-idf\components\ 의 하위 모든 include 폴더를
참조할 방법은 없습니다. 필요한 헤더 파일에 맞추어 아래와 같이 REQUIRES 를 작성해 주어야 합니다.
필요한 헤더 파일이
C:\Espressif\frameworks\esp-idf\components\driver\include\driver\gpio.h
이 경로에 있다면, REQUIRES "driver" -> #include "driver/gpio.h"
C:\Espressif\frameworks\esp-idf\components\nvs_flash\include\nvs.h
이 경로에 있다면, REQUIRES "nvs_flash" -> #include "nvs.h"
REQUIRES에 작성한 경로의 하위 include 를 참조 하겠다는 뜻 입니다.*예외적으로 freertos, log, esp_common 등의 components는 컴파일시 기본 경로 참조를 하고 있기 때문에 REQUIRES 작성이 필요 없습니다.
2) 외부 경로 components 참조
프로젝트 폴더나 C:\Espressif\frameworks\esp-idf\components\ 경로가 아닌 외부 폴더의 components 참조 방법.
참조할 헤더 파일이 C:/ESP_test/components/plus (임의 경로) 에 있다면 /main 의 CMakeLists.txt 가 아닌 루트 폴더의 CMakeLists.txt 를 아래와 같이 수정해 줍니다.
cmake_minimum_required(VERSION 3.16) set(EXTRA_COMPONENT_DIRS C:/ESP_test/components/plus) // 외부 경로 include($ENV{IDF_PATH}/tools/cmake/project.cmake) project(hello_world)
set(EXTRA_COMPONENT_DIRS C:/ESP_test/components/plus) 라인만 추가가 되었습니다.
끝
*공부하는 입장에서 정리중인 자료들 입니다.
ESP-IDF 윈도우 개발환경 세팅 (VSCODE)
ESP-IDF 외부 폴더에서 예제 파일 실행 (VSCODE)
ESP-IDF GPIO 인풋, 아웃풋 (VSCODE)
ESP-IDF 인터럽트 (VSCODE)ESP-IDF 디바운싱 (esp32, vscode)
ESP-IDF .c .h 참조 cMakeLists (vscode)ESP-IDF components 참조 cMakeLists (vscode)
ESP-IDF LCD 출력(vscode)
ESP-IDF 메모리 - Flash (vscode)
ESP-IDF 메모리 - SRAM (vscode)
ESP-IDF FreeRTOS - buffer (vscode)ESP-IDF 쿨링팬 FG센서, PWM제어(vscode)
<포스트 예정>*ESP-IDF 메모리 - ROM
*LCD - 메뉴 만들고 버튼으로 메뉴 이동(터미널로 작업)
*LCD - 2차원 배열로 메뉴 진입, 뒤로가기(터미널로 작업)
*LCD - 메뉴 만든 것 LCD 출력
*LCD - 메뉴 UI 제작. 연두색 블럭은 메인 메뉴 회색 블럭은 서브 메뉴
(1.팬 1-1.ON 1-2.OFF 1-3.BACK 2.LED 2-1.밝기 약 2-2.밝기 중 2-3.밝기 강 2-4.BACK 3.빛 밝기 출력 lux(+PPFD 변환)
*Easy EDA툴 활용하여 커스텀 ESP32 보드 제작
*LCD - LCD , 팬 , 펌프 , ESP32 연결 가능한 PCB 제작 주문.
*LCD - 간이 스마트팜 제작
*ESP32 JTAG 디버그
*FreeRTOS
*FreeRTOS - QUEUE
*FreeRTOS - timer
*FreeRTOS - Semaphore , mutex
*FreeRTOS - event group , notification
*ESP-IDF I2C SPI UART
*ESP-IDF wifi
*ESP-IDF MQTT
*ESP-IDF Server (XAMPP 로컬 서버 연결)*DIY 컨테이너 / 유리온실 스마트팜 제작
'소프트웨어' 카테고리의 다른 글
ESP-IDF 메모리 - Flash (vscode) (0) 2023.03.25 ESP-IDF LCD 예제(vscode) (0) 2023.03.25 ESP-IDF .c .h 참조 cMakeLists (vscode) (0) 2023.03.24 ESP-IDF 디바운싱 (vscode) (0) 2023.03.23 ESP-IDF 인터럽트 (vscode) (0) 2023.03.18