使用项目目录外部的 ESP-IDF 组件

问题描述 投票:0回答:1

我有多个 IDF 项目,其中许多都使用相同的组件。我不想在每个项目的目录中都有组件的副本,而是希望将所有组件放在全局目录中并在我的所有项目中使用它们。 我在 VSCode 中使用 ESP-IDF v.4.4.4。 这是我想要的结构:

main_directory
|
|__global_components
|  |__component1
|  |__component2
|  |__component3
|
|__project1
|  |__CMakeLists.txt
|  |__sdkconfig
|  |__main/
|  |  |__CMakeLists.txt
|  |  |__src.c
|  |__build
|
|__project2
|  |__CMakeLists.txt
|  |__sdkconfig
|  |__main/
|  |  |__CMakeLists.txt
|  |  |__src.c
|  |__build
|
|__project3

这就是我的项目目录中的

CMakeLists.txt
文件的样子:

# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)

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

我该如何更改此文件?

这就是我的项目/主目录中的

CMakeLists.txt
的样子:

idf_component_register(
    SRCS "crypto.cpp" "image.cpp" "main.cpp"
    INCLUDE_DIRS "."
)

我也必须更改此文件吗? 感谢您的帮助。如果我以错误的方式处理这个问题,并且有更好的方法来解决这个问题,我很想知道。

我尝试了

set(EXTRA_COMPONENT_DIRS $(PROJECT_PATH)/../global_components/)
,但没有成功。

c cmake arduino esp32 esp-idf
1个回答
0
投票

尝试定义

set(EXTRA_COMPONENT_DIRS $(PROJECT_PATH)/../global_components/)

在您的根

CMakeLists.txt
文件中声明项目之前。像这样:

set(EXTRA_COMPONENT_DIRS $(PROJECT_PATH)/../global_components/)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(esp32_project)
© www.soinside.com 2019 - 2024. All rights reserved.