Linking BSEC library to ESP-IDF for BME680

I am using the BME680 with the ESP32-PoE and I want to use the BSEC library to get the IAQ. I have been stuck at the last step of linking the pre-built libalgobsec.a library. This is what my CMakeLists file in my BSEC components folder looks like:

set(COMPONENT_SRCS "bme680.c"
"bsec_integration.c")

set(COMPONENT_ADD_INCLUDEDIRS "include")

register_component()

add_library(algobsec STATIC IMPORTED)
set_property(TARGET algobsec PROPERTY IMPORTED_LOCATION ../lib/libalgobsec.a)

I have not done the 3 steps for linking as stated in the Integration Guide as I do not know where to find the files to which I need to make changes. I am currently getting this error when I build the project:

I would really appreciate any help to get the library running. Thank you!

 

Best reply by Apurva

Hello! I managed to fix the issue. I separated the BME680 files from the BSEC files. My BSEC component structure is as follows:

  • include (folder)
  1. bsec_datatypes.h
  2. bsec_integration.h
  3. bsec_interface.h
  • lib (folder)
  1. libalgobsec.h (normal)
  • bsec_integration.c
  • CMakeLists.txt
  • component.mk

The CMakeLists.txt contains:

CODE: SELECT ALL

set(COMPONENT_SRCS 
"bsec_integration.c")

set(COMPONENT_ADD_INCLUDEDIRS include)
set(COMPONENT_REQUIRES "BME680")
register_component()
target_link_libraries(${COMPONENT_TARGET} "-L${CMAKE_CURRENT_LIST_DIR}/lib")
target_link_libraries(${COMPONENT_TARGET} algobsec)

The component.mk contains:

CODE: SELECT ALL

COMPONENT_SRCDIRS := .
COMPONENT_ADD_INCLUDEDIRS := include

LIBS := algobsec

COMPONENT_ADD_LDFLAGS     := -lbt -L $(COMPONENT_PATH)/lib \
                           $(addprefix -l,$(LIBS))
ALL_LIB_FILES := $(patsubst %,$(COMPONENT_PATH)/lib/lib%.a,$(LIBS))
COMPONENT_ADD_LINKER_DEPS := $(ALL_LIB_FILES)
COMPONENT_SUBMODULES += lib

My BME680 component structure is as follows:

  • include (folder)
  1. bme680.h
  2. bme680_defs.h
  3. bme680_platforms.h
  4. bme680_types.h
  • bme680.c
  • bme680_platform.c
  • CMakeLists.txt
  • component.mk

The CMakeLists.txt contains:

CODE: SELECT ALL

set(COMPONENT_SRCS "bme680_platform.c"
                   "bme680.c")
set(COMPONENT_ADD_INCLUDEDIRS "include")

register_component()

The component.mk contains:

CODE: SELECT ALL

COMPONENT_ADD_INCLUDEDIRS := include
View original
8 replies
Resolved