CMAKE 和 ESP IDF:如何将组件作为子文件夹包含?

CMAKE & ESP IDF: how to include components as subfolders?

提问人:Ananth Narayanan 提问时间:11/18/2023 最后编辑:Ananth Narayanan 更新时间:11/22/2023 访问量:28

问:

我的项目是这样的,

.components
...drivers
......usb
........usb.c
........usb.h
......lcd
......etc
.main
...main.c

在main.c中,我想将库作为

#include "drivers/usb.h"
#include "drivers/lcd.h"

如何将CMake配置为包含子文件夹,但将组件本身作为文件夹包含?

我试图将子文件夹作为PRIV_INCLUDE_DIRS, 但它的工作原理是这样的,

#include "usb/usb.h" 

而不是

#include "component/sourcefile.h"

esp-idf 组件(如 driver 和 FreeRTOS)设法实现了这一点,因此 好吧,只是不知道如何实现这种风格。

任何帮助表示赞赏!

cmake esp32 esp-idf 乐鑫-idf

评论


答:

1赞 StrawHat 11/21/2023 #1

首先,如果要在组件本身之外使用头文件,则需要在调用组件的 .有关更多信息,请参阅 IDF Build System 组件命令文档页面INCLUDE_DIRSPRIV_INCLUDE_DIRSidf_component_register(...)CMakeLists.txt

要启用将头文件作为 ,可以执行以下操作:在 、 等中添加一个子文件夹,将相应的头文件移动到那里,并使用 in 添加每个目录(、 等)。 您的文件树将如下所示:driver/xxx.hdriverusblcdusblcdINCLUDE_DIRSidf_component_register(...)

.components
...drivers
......usb
........usb.c
........driver
..........usb.h
......lcd
........driver
..........lcd.h (not present above, but requested in your code example)
......etc
.main
...main.c

事实上,ESP-IDF 本身的许多驱动程序头都是这样做的。

评论

0赞 Ananth Narayanan 11/24/2023
多谢。这对我有用。