Setting CMake with a library INTERFACE (DS3231)

Hello everyone,

really I don’t understand what’s wrong.

Simple folder tree:

- Development
  - CMakeLists.txt       (1)
  - main.cpp
  - hwconfig.c
  - pico_sdk_import
  - build
  - lib
    - CMakeLists.txt      (2)
    - pico-ds3231
       - examples
       - lib
          - CMakeLists.txt    (3)
          - ds3231.c
          - include
             - ds3231.h

(1)

… raspberry pi pico stuff

add_subdirectory(lib)

add_executable(${PROJECT_NAME}
main.cpp
hw_config.c
)

target_include_directories(app PRIVATE
lib/pico-ds3231/lib/include
)

target_link_libraries(${PROJECT_NAME}
pico_stdlib
hardware_rtc
pico-ds3231
)

(2)

add_subdirectory(pico-ds3231/lib)

(3)

add_library(pico-ds3231 INTERFACE)

target_sources(pico-ds3231 INTERFACE
${CMAKE_CURRENT_LIST_DIR}/ds3231.c
${CMAKE_CURRENT_LIST_DIR}/include/ds3231.h
)

target_include_directories(FatFs_SPI INTERFACE
include
)

target_link_libraries(pico-ds3231 INTERFACE
hardware_i2c
pico_stdlib
)

The error is always

[build] [78/79 98% :: 2.912] Linking CXX executable app.elf

[build] FAILED: app.elf

undefined reference to `ds3231_init(i2c_inst*, unsigned char, unsigned char, ds3231_rtc*)’

any suggestion?