Re: [cmake-developers] [ANNOUNCE] CMake 3.12.0-rc2 is ready for testing
It seems that CMake does not find PkgConfig::GooCanvas because it is imported but not globally imported, i.e. it is maybe a visibility problem. For reference, the relaxation of this limitation (https://gitlab.kitware.com/cmake/cmake/merge_requests/2040) is covered by this additional check for the LHS target: https://gitlab.kitware.com/cmake/cmake/blob/c9349cc1b94a08b4f5ed86a397e72ceed50847dd/Source/cmTargetLinkLibrariesCommand.cxx#L383 Maybe a corresponding check for locally imported RHS targets is missing here: https://gitlab.kitware.com/cmake/cmake/blob/c9349cc1b94a08b4f5ed86a397e72ceed50847dd/Source/cmTargetLinkLibrariesCommand.cxx#L396 Best regards, Patrick Stotko Am 30.06.2018 um 21:15 schrieb Rolf Eike Beer: * The "target_link_libraries()" command may now be called to modify targets created outside the current directory. I played a bit around with that as I hope it would simplify some things in OSM2go, but it looks there are still some limitations: in main: add_library(osm2go_lib ...) add_subdirectory(sub) in sub: pkg_search_module(GooCanvas REQUIRED IMPORTED_TARGET goocanvas) target_sources(osm2go_lib PRIVATE src/platforms/gtk/canvas_goocanvas.cpp ) target_link_libraries(osm2go_lib PRIVATE PkgConfig::GooCanvas) Breaks: CMake Error at CMakeLists.txt:43 (add_library): Target "osm2go_lib" links to target "PkgConfig::GooCanvas" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing? Is this intended to work? There is an easy workaround, but it feels nasty: add_library(osm2go_x_lib INTERFACE) target_link_libraries(osm2go_x_lib INTERFACE PkgConfig::GooCanvas) target_link_libraries(osm2go_lib PRIVATE osm2go_x_lib) -- 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: https://cmake.org/mailman/listinfo/cmake-developers
Re: [cmake-developers] [ANNOUNCE] CMake 3.12.0-rc2 is ready for testing
> There is an easy workaround, but it feels nasty: > > add_library(osm2go_x_lib INTERFACE) > target_link_libraries(osm2go_x_lib INTERFACE PkgConfig::GooCanvas) > target_link_libraries(osm2go_lib PRIVATE osm2go_x_lib) This also seems to be not "stackable", i.e. an additional interface library in sub/sub can neither be linked into osm2go_lib nor osm2go_x_lib. signature.asc Description: This is a digitally signed message part. -- 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: https://cmake.org/mailman/listinfo/cmake-developers
Re: [cmake-developers] [ANNOUNCE] CMake 3.12.0-rc2 is ready for testing
> * The "target_link_libraries()" command may now be called to modify > targets created outside the current directory. I played a bit around with that as I hope it would simplify some things in OSM2go, but it looks there are still some limitations: in main: add_library(osm2go_lib ...) add_subdirectory(sub) in sub: pkg_search_module(GooCanvas REQUIRED IMPORTED_TARGET goocanvas) target_sources(osm2go_lib PRIVATE src/platforms/gtk/canvas_goocanvas.cpp ) target_link_libraries(osm2go_lib PRIVATE PkgConfig::GooCanvas) Breaks: CMake Error at CMakeLists.txt:43 (add_library): Target "osm2go_lib" links to target "PkgConfig::GooCanvas" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing? Is this intended to work? There is an easy workaround, but it feels nasty: add_library(osm2go_x_lib INTERFACE) target_link_libraries(osm2go_x_lib INTERFACE PkgConfig::GooCanvas) target_link_libraries(osm2go_lib PRIVATE osm2go_x_lib) signature.asc Description: This is a digitally signed message part. -- 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: https://cmake.org/mailman/listinfo/cmake-developers