ESP-IDF 学习 1 工程文件管理

最小项目目录结构

├── CMakeLists.txt
├── main
│ ├── CMakeLists.txt
│ └── main.c
└── README.md

  • ESP-IDF 给用户的函数入口在 void app_main(void)
  • ./CMakeLists.txt管理整个工程
  • ./main/CMakeLists.txt管理./main文件夹中的所有文件

若要将 .c & .h 文件区分开,往往会创建一个或多个目录来装载它们。

如以下目录( 该树状图经过裁剪,尽可能只保留了用户创建的目录 )

├───.devcontainer
├───.vscode
├───main
│ └───include
└───managed_components
├───espressif__esp_tinyusb
│ ├───include
│ ├───include_private
│ ├───test
│ │ └───local
│ └───test_app
│ └───main
└───espressif__tinyusb

有以上目录,以下是我在./main/CMakeLists.txt的配置

idf_component_register(SRCS "My_mcu_sleep_init.c" "My_WIFI_init.c" "led_strip_encoder.c" "My_LED_init.c" "My_https_request.c" "My_timer_init.c" "My_GPIO_init.c" "My_usb_device.c" "app_main.c"
                       INCLUDE_DIRS "./include"
                       EMBED_TXTFILES server_root_cert.pem local_server_cert.pem)

于是我们的 .h 文件就都被装到 ./main/include 这个目录里头了,但是这些 .c 文件还是逐个添加,虽然我创建文件写好以后直接编译,它就自动写入./main/CMakeLists.txt,但是这样确实也不方便阅读。
于是我又尝试把 .c 文件都装到同一目录中,就有了以下./main/CMakeLists.txt

idf_component_register(#SRCS "My_mcu_sleep_init.c" "My_WIFI_init.c" "led_strip_encoder.c" "My_LED_init.c" "My_https_request.c" "My_timer_init.c" "My_GPIO_init.c" "My_usb_device.c" "app_main.c"
                       SRC_DIRS "./source"
                       INCLUDE_DIRS "./include"
                       EMBED_TXTFILES server_root_cert.pem local_server_cert.pem)

↑ 但这样的 cmake 是大错特错的 ↑

这样会导致编译的时候一直找不到 void app_main(void) 这个函数入口

↓ 最后是这样解决的 ↓

file(GLOB_RECURSE SOURCES "./source/*.c")
idf_component_register(
                    SRCS ${SOURCES}
                    INCLUDE_DIRS "./include/")

这才算是编译成功了,没有弹出找不到 void app_main(void) 的错误

添加组件

├───.devcontainer
├───.vscode
├───main
│ └───include
└───managed_components
├───espressif__esp_tinyusb
│ ├───include
│ ├───include_private
│ ├───test
│ │ └───local
│ └───test_app
│ └───main
└───espressif__tinyusb

↑ 见以上目录,可以看见./managed_components

有时候某些功能 ESP-IDF 并不会内置,因此需要添加外置的组件才能使用相应的 API,如:TinyUSB
鉴于楼主才疏識浅,是用 ESP-IDF terminal 输入指令 idf.py add-dependency esp_tinyusb一键生成的


参考网站:

posted @ 2024-10-07 17:38  我是只平平  阅读(98)  评论(0编辑  收藏  举报