【问题标题】:CMake and ESP-IDF: Creating custom componentsCMake 和 ESP-IDF:创建自定义组件
【发布时间】:2021-12-28 20:39:21
【问题描述】:

框架:

ESP-IDF v4.3.1 - Eclipse 插件

具有 1 个活动组件的项目(我的计划是添加 ble 扫描、mqtt 消息传递和 wifi 访问)

IDF_PATH:        C:\Users\username\source\esp-idf-v4.3.1\
IDF_TOOLS_PATH:  C:\Users\username\.espressif

目标: 将 MQTT 能力添加到 ESP-IDF 中的自定义组件

问题:

../components/mqtt/include/mqtt.h:24:10: fatal error: mqtt_client.h: No such file or directory
 #include "mqtt_client.h"

项目目录内容:

/components/mqtt/CMakeLists.txt的内容:

idf_component_register(SRCS "mqtt.c"
                        INCLUDE_DIRS "include"
                        REQUIRES mqtt esp-tls)

我按照此处 ESP-IDF 文档的指示将 mqtt 和 esp-tls 所需组件添加到 CMakeLists.txt 文件中:https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html#idf-component-commands

尝试修复 1 我修复此代码的第一次尝试是将 /components/mqtt/CMakeLists.txt 的内容更新为直接引用所需的包含文件:

idf_component_register(SRCS 
                        "mqtt.c"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/mqtt/esp-mqtt/mqtt_client.c"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/esp-mqtt/lib/mqtt_msg.c"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/esp-mqtt/lib/mqtt_outbox.c"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/esp-mqtt/lib/platform_esp32_idf.c"
                    INCLUDE_DIRS 
                        "include"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/mqtt/esp-mqtt/include" 
                        "C:/Users/user/source/esp-idf-v4.3.1/components/esp-tls"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/mbedtls/mbedtls/include"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/mbedtls/port/include"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/tcp_transport/include"
                        "C:/Users/user/source/esp-idf-v4.3.1/components/nghttp/port/include"
                    PRIV_INCLUDE_DIRS "C:/Users/user/source/esp-idf-v4.3.1/components/mqtt/esp-mqtt/lib/include" 
                    REQUIRES lwip nghttp mbedtls)

这可以构建,但是必须有更好的方法来构建 mqtt 组件。谁能帮我修改我的 CMakeLists.txt 文件以正确拉入 esp-idf mqtt 组件?

【问题讨论】:

    标签: cmake mqtt esp32 esp-idf cmakelists-options


    【解决方案1】:

    您有命名冲突。您正在尝试创建一个名为 mqtt 的自定义组件,它需要名为 mqtt 的系统组件,并且您希望构建系统能够解决这个问题。那只是自找麻烦:)

    将您的组件命名为myproject-mqtt 或其他名称。注意您的组件wifible 是否存在类似问题。

    【讨论】:

    • 这修复了它。我重命名了我的组件 mycustom-mqtt 并简化了 CMakeLists.txt 文件。谢谢你塔莫!
    • 很高兴听到这个消息。快乐的黑客攻击!
    猜你喜欢
    • 2023-04-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2023-01-27
    • 2011-03-06
    • 2021-01-12
    相关资源
    最近更新 更多