Am 18. Juli 2017 18:02:40 MESZ schrieb Eric Noulard <eric.noul...@gmail.com>: >2017-07-17 17:31 GMT+02:00 Robert Dailey <rcdailey.li...@gmail.com>: > >> Suppose I have the following: >> >> ``` >> add_library( A STATIC ${files} ) >> >> add_library( B SHARED ${more_files} ) >> target_link_libraries( B PUBLIC A ) >> >> add_library( C STATIC ${even_more_files} ) >> target_link_libraries( C PUBLIC B ) >> >> >> add_executable( D ${exe_files} ) >> target_link_libraries( D PRIVATE C ) >> ``` >> >> Does the linker command for target `D` ever see target A's static >link >> library? I'm hoping the only thing the linker gets is `libB.so` and >> `libC.a`, without `libA.a`. >> > >I guess it does otherwise you may be missing symbols. >As explain by Peter some time ago: > https://cmake.org/pipermail/cmake/2017-April/065347.html >when you >target_link_libraries( B PUBLIC A ) > >with A being STATIC you do not really link A into B (which is shared in >your example)
You confused PUBLIC and INTERFACE in your response. target_link_libraries( B PUBLIC A ) DOES link A into B but only the symbols needed by B. The link to the old post has it all right. HS -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. -- 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