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

Reply via email to