[CMake] Link order (Ubuntu)

Giorgio Scorzelli scrgiorgio at gmail.com
Tue Nov 6 09:19:17 EST 2018


Thanks for you help.

They are really shared lib, not static. I know it sounds weird: it's a
python extension which must not link the ${PYTHON_LIBRARY}  (according to
official docs; in fact If I do so I get a segmentation fault) but finally
in my executable,a sort of custom/home made  ${PYTHON_EXECUTABLE}, I have
to link the ${PYTHON_LIBRARY}.

About the "B;A;ImportedExtLib;B;A" order. I agree too: it SHOULD work.
Let's say I do:

target_link_libraries(MyExe B A ImpLib)

in command line (make VERBOSE=1) I;m getting

g++ .... -o MyExe B A ImpLib A

The last "A" is coming from target_link_libraries(B PUBLIC A) and the
linker  is complaining that this last "A" has undefined symbols.

Thanks.Giorgio.








Il giorno mar 6 nov 2018 alle ore 06:59 Robert Maynard <
robert.maynard at kitware.com> ha scritto:

> You have order dependent static libraries which can be solved by
> constructing a cycle. As Bo stated by constructing the cycle
> B;A;ImportedExtLib;B;A each library can see each other.
>
> Looking at your original code example it looks like you are importing
> the libraries as SHARED, but I think these are actually static
> libraries and should be imported as such so that CMake does the
> automatic cycle creation. In general CMake doesn't do cycle creation
> for shared libraries as they are not link order dependent.
> On Tue, Nov 6, 2018 at 8:51 AM Giorgio Scorzelli <scrgiorgio at gmail.com>
> wrote:
> >
> > I read the docs about  LINK_INTERFACE_MULTIPLICITY    too.
> > But I'm not in the situation of a "cyclic dependency" so I 'm not sure
> if it solve my problem.
> > In my case (with B A and ImpLib) what would be the syntax?
> >
> > Il giorno mar 6 nov 2018 alle ore 06:30 Robert Maynard <
> robert.maynard at kitware.com> ha scritto:
> >>
> >> The target_link_libraries has a property called
> >> LINK_INTERFACE_MULTIPLICITY that should help you out.
> >>
> https://cmake.org/cmake/help/v3.13/command/target_link_libraries.html#cyclic-dependencies-of-static-libraries
> >>
> >>
> >> On Tue, Nov 6, 2018 at 8:24 AM scrgiorgio <scrgiorgio at gmail.com> wrote:
> >> >
> >> > Thanks for the help,
> >> >
> >> > trying this (or any combination):
> >> >
> >> > target_link_libraries(MyExe B)
> >> > target_link_libraries(MyExe A )
> >> > target_link_libraries(MyExe ImpLib)
> >> >
> >> > I get this order:
> >> >
> >> > 'B;...whatever...;A;ImpLib"
> >> >
> >> > and the last past is causing the problem. Apparently there is no way
> to
> >> > change the right part (-Wl,--start-group -Wl,--end-groun sometimes
> work,
> >> > sometimes not).
> >> > Any advice?
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> > Sent from: http://cmake.3232098.n2.nabble.com/
> >> > --
> >> >
> >> > 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20181106/3e157f06/attachment.html>


More information about the CMake mailing list