我有多个 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/)
,但没有成功。
尝试定义
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)