CMAKE & ESP IDF:如何将组件包含为XML?

wlp8pajw  于 2024-01-09  发布在  其他
关注(0)|答案(1)|浏览(235)

My project项目looks容貌like this,

  1. .components
  2. ...drivers
  3. ......usb
  4. ........usb.c
  5. ........usb.h
  6. ......lcd
  7. ......etc
  8. .main
  9. ...main.c

字符串
在main.c中,我希望包含库作为

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


如何配置CMake以包含组件,但将组件本身作为文件夹包含?
我已经尝试过将数据包包含为PRIV_INCLUDE_DIRS,但它的工作原理是这样的,

  1. #include "usb/usb.h"


而不是

  1. #include "component/sourcefile.h"


像驱动程序和FreeRTOS这样的esp-idf组件可以很好地实现这一点,只是不知道如何实现这种风格。
任何帮助赞赏!

vjhs03f7

vjhs03f71#

首先,如果你想使用组件本身之外的头文件,在组件的CMakeLists.txt中调用idf_component_register(...)时,需要使用INCLUDE_DIRS而不是PRIV_INCLUDE_DIRS。更多信息,请参见IDF Build System组件命令文档页面。
要启用包含头文件作为driver/xxx.h,您可以执行以下操作:在usblcd等中的每个中添加子文件夹driver,将相应的头文件移动到那里并添加每个目录(usblcd等),在idf_component_register(...)中使用INCLUDE_DIRS。您的文件树如下所示:

  1. .components
  2. ...drivers
  3. ......usb
  4. ........usb.c
  5. ........driver
  6. ..........usb.h
  7. ......lcd
  8. ........driver
  9. ..........lcd.h (not present above, but requested in your code example)
  10. ......etc
  11. .main
  12. ...main.c

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

展开查看全部

相关问题