# 1. Load all source files from lib/ and src/ file(GLOB_RECURSE LIB_SRCS "lib/*.cpp" "lib/*.c") file(GLOB_RECURSE SRC_SRCS "src/*.cpp" "src/*.c") # 2. Search for headers from lib/, include/ and src/ file(GLOB_RECURSE ALL_HEADERS "lib/*.h" "lib/*.hpp" "include/*.h" "include/*.hpp" "src/*.h" "src/*.hpp" ) # 3. Add include directories set(ALL_INC_DIRS "") # Add root directories list(APPEND ALL_INC_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include") list(APPEND ALL_INC_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") list(APPEND ALL_INC_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/lib") foreach(header ${ALL_HEADERS}) # Search all found headers and add their directories get_filename_component(header_dir ${header} DIRECTORY) list(APPEND ALL_INC_DIRS ${header_dir}) # PlatformIO trick: add parent diewcoty for relations like "Folder/File.h" get_filename_component(parent_dir ${header_dir} DIRECTORY) list(APPEND ALL_INC_DIRS ${parent_dir}) endforeach() list(REMOVE_DUPLICATES ALL_INC_DIRS) # 4. Register component for ESP-IDF idf_component_register( PRIV_REQUIRES spi_flash SRCS ${SRC_SRCS} ${LIB_SRCS} INCLUDE_DIRS ${ALL_INC_DIRS} REQUIRES arduino ) add_compile_definitions( NBUS_NODE_TYPE_SLAVE ARDUINO_CORE_3X )