I am following the instructions from the manual to correctly propagate object files from an object library and usage dependencies according to: target_link_libraries — CMake 3.27.0-rc3 Documentation
So I have some CMake logic along the following lines:
add_library(foo OBJECT)
target_sources(foo ...)
add_library(foo-interface INTERFACE)
target_link_libraries(foo-interface INTERFACE foo $<TARGET_OBJECTS:foo>)
add_library(foo-shared SHARED)
target_link_libraries(foo-shared PUBLIC foo-interface)
This does not work, since CMake complains about the library foo-shared
being added without having any sources associated with it. It can be solved by specifying target_sources()
separately but it sort of defeats the purpose of defining the targets objects on the intermediate interface library. Am I missing something here or is this some missing corner-case or feature?