[CMake] Link order (Ubuntu)

Robert Maynard robert.maynard at kitware.com
Tue Nov 6 08:59:21 EST 2018


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


More information about the CMake mailing list