Hi, Apologies, the problem wasn't properly minimised because I had some trouble wrapping my head around it. Here's two complete examples which I hope can explain the problem better this time.
1) This works: [CMakeLists.txt] cmake_minimum_required(VERSION 3.6) project(Test) add_library(lib1-obj OBJECT lib1.cpp) add_library(lib1 INTERFACE) set_target_properties(lib1 PROPERTIES INTERFACE_SOURCES $<TARGET_OBJECTS:lib1-obj>) add_library(lib2 lib2.cpp) target_link_libraries(lib2 lib1) add_executable(main main.cpp) target_link_libraries(main lib2) 2) But this does not: [CMakeLists.txt] cmake_minimum_required(VERSION 3.6) project(Test) add_library(lib1-obj OBJECT lib1.cpp) add_library(lib1 INTERFACE) set_target_properties(lib1 PROPERTIES INTERFACE_SOURCES $<TARGET_OBJECTS:lib1-obj>) add_library(lib2 lib2.cpp) target_link_libraries(lib2 lib1) add_subdirectory(main) [main/CMakeLists.txt] add_executable(main main.cpp) target_link_libraries(main lib2) With the second example, I get an error "cannot find source file lib1.cpp.o tried extensions...". Thanks, -- Giovanni On Thu, Dec 8, 2016 at 9:56 PM, Stephen Kelly <steve...@gmail.com> wrote: > Giovanni Funchal wrote: > > > Hi, > > > > The help page [1] mentions that: > > > >> Although object libraries may not be named directly in calls to the > >> target_link_libraries() command, they can be “linked” indirectly by > >> using an Interface Library whose INTERFACE_SOURCES target property > >> is set to name $<TARGET_OBJECTS:objlib>. > > > > However, I was unable to get this to work. Doing this: > > > > add_library(lib-obj OBJECT test.cpp) > > add_library(lib INTERFACE) > > add_dependencies(lib lib-obj) > > set_target_properties(lib PROPERTIES INTERFACE_SOURCES > > $<TARGET_OBJECTS:lib-obj>) > > > > And then trying to specify lib in link_libraries of an executable yields > > an error message "Cannot find source file: ... Tried extensions:... ". > > > > Am I doing something wrong? > > This works for me: > > cmake_minimum_required(VERSION 3.3) > > project(testit CXX) > > add_library(lib-obj OBJECT foo.cpp) > add_library(lib-iface INTERFACE) > set_target_properties(lib-iface PROPERTIES > INTERFACE_SOURCES $<TARGET_OBJECTS:lib-obj> > ) > add_executable(main foo-user.cpp) > target_link_libraries(main lib-iface) > > > Thanks, > > Steve. > > > -- > > Powered by www.kitware.com > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Kitware offers various services to support the CMake community. For more > information on each offering, please visit: > > CMake Support: http://cmake.org/cmake/help/support.html > CMake Consulting: http://cmake.org/cmake/help/consulting.html > CMake Training Courses: http://cmake.org/cmake/help/training.html > > Visit other Kitware open-source projects at http://www.kitware.com/ > opensource/opensource.html > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/cmake
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake