cmake add_library STATIC - работает, OBJECT - undefined reference
Я не профессионал в использовании cmake. Есть личный проект и я пытаюсь разработать его с cmake и вот тут незадача, просто не могу понять как это преодолеть.
Пример сруктуры проекта:
root
|-CMakeLists.txt
|-src/
|-CMakeLists.txt
|-main.cpp
|-data/
|-CMakeLists.txt
|-data_units
|-CMakeLists.txt
|-data_unit1.cpp
Содержимое:
root/CMakeLists.txt
add_subdirectory(src)
root/src/CMakeLists.txt
add_subdirectory(data)
add_executable(exe main.cpp)
target_link_libraries(exe PRIVATE data)
root/src/data/CMakeLists.txt
add_subdirectory(data_units)
add_library(data INTERFACE)
target_link_libraries(data INTERFACE data_units)
root/src/data/data_units/CMakeLists.txt
add_library(data_unit1 OBJECT data_unit1.cpp)
add_library(data_units INTERFACE)
target_link_libraries(data_uints INTERFACE data_unit1)
В main.cpp идет создание класса из data_unit1.cpp, если в add_library для data_unit1 указывается OBJECT, то линковщик выдает undefined reference to 'этот класс'. Если же сделать STATIC в add_library для data_unit1, то всё хорошо.
Я не могу найти решение и понять что я делаю не так. Мне бы хотелось избавиться от необходимости создавать лишний раз библиотеку.
Версия cmake 3.27.7
UPD:
Если написать $<TARGET_OBJECTS:data>, то ошибка, что TARGET_OBJECTS не работает для INTERFACE.