【问题标题】:ESP-IDF project with multiple source files具有多个源文件的 ESP-IDF 项目
【发布时间】:2021-06-21 06:53:30
【问题描述】:

我从一个简单的“闪烁”示例开始我的项目,并将其用作编写代码的模板。 此示例仅使用了一个源文件blink.c。 最终,我想使用多源文件项目,但不知道如何配置CMakeLists.txt 以编译项目。

我的CMakeLists.txt 是:

cmake_minimum_required(VERSION 3.5)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)

project(blink)

我想添加例如init.c。 我尝试了不同的方法,但没有成功。

idf_component_register() / register_component() 都不适合我。

知道如何正确配置项目吗?

【问题讨论】:

    标签: cmake esp32 esp-idf


    【解决方案1】:

    没错,ESP IDF 中的 CMake 项目层次结构有点棘手。您正在查看错误的 CMakeLists.txt 文件。而不是根目录中的那个,打开blink/main/CMakeLists.txt 中的那个。该文件列出了“主”组件的源文件,这是您要使用的。它看起来像这样:

    idf_component_register(SRCS "blink.c" "init.c"
                        INCLUDE_DIRS ".")
    

    确保您的init.c 文件与此CMakeLists.txtblink.c 位于同一目录中。

    我还建议您看看 Espressif Build System documentation,它非常有用。

    【讨论】:

    • 谢谢!有效。它在找我有点奇怪,现在所有的碎片都放好了。
    【解决方案2】:

    您应该编辑位于项目文件夹内main 文件夹中的 CMakeLists.txt。另外,需要将包含头文件的目录放入INCLUDE_DIRS参数中。

    例如,如果您的项目中有这样的文件结构(您将init.h 放在include 文件夹中)如下所示:

    blink/
    ├── main/
    │   ├── include/
    │   │   └── init.h
    │   ├── blink.c
    │   ├── CMakeLists.txt
    │   ├── init.c
    │   └── ...
    ├── CMakeLists.txt
    └── ...
    

    main/CMakeLists.txt 中的内容应该是:

    idf_component_register(SRCS "blink.c" "init.c"
                        INCLUDE_DIRS "." "include")
    

    【讨论】:

      猜你喜欢
      • 2023-01-04
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多