2017-07-18 19:15 GMT+02:00 Hendrik Sattler <[email protected]>:
> > > Am 18. Juli 2017 18:02:40 MESZ schrieb Eric Noulard < > [email protected]>: > >2017-07-17 17:31 GMT+02:00 Robert Dailey <[email protected]>: > > > >> 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. > > Thanks for the clarification Hendrik, The thing I wasn't sure is that when B is shared and A is static target_link_libraries(B PUBLIC A) or even target_link_libraries(B PRIVATE A) was effectively putting objects from A needed by B into B. My use case was when B and A were STATIC. I'll try an example in order to have concrete example at hand. -- Eric
-- 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
