LINUX.ORG.RU

Статическая линковка с ExternalProject

 


0

1

В ../libevent-prefix/lib/ есть библиотека libevent.a, являющаяся результатом сборки ExternalProject, и которую надо слинковать с другим target.

На первый взгляд, нужно всего лишь засунуть ее в link_directories и target_link_libraries. Но линкер упорно подхватывает динамическую версию, которая стоит в моей системе.

Так как добавить "-static-" линковать все статически для меня не вариант, в общем-то устроит любой костыль, добавляющий " ../libevent-prefix/libevent.a" в конец команды сборки:

$ /usr/bin/c++     CMakeFiles/transmission-daemon.dir/daemon.c.o CMakeFiles/transmission-daemon.dir/watch.c.o  -o transmission-daemon -rdynamic -L"../ ../third-party/libutp/ ../libevent-prefix/lib/ ../third-party/libevent/ ../third-party/libutp/ ../third-party/dht/ ../third-party/miniupnp/ ../third-party/libnatpmp" ../libtransmission/libtransmission.a ../third-party/libutp/libutp.a ../third-party/dht/libdht.a ../third-party/libnatpmp/libnatpmp.a ../third-party/miniupnp/libminiupnp.a -lcurl -Wl,-rpath,"../ ../third-party/libutp/ ../libevent-prefix/lib/ ../third-party/libevent/ ../third-party/libutp/ ../third-party/dht/ ../third-party/miniupnp/ ../third-party/libnatpmp"
★★★

Последнее исправление: Minoru (всего исправлений: 1)

set(static_libevent path_to_static_libevent_relative_or_absolute/libevent.a)
target_link_libraries(other_libs ${static_libevent})

и как при таком раскладе cmake внезапно подхватывает системную либу? он у тебя маг и чародей ?

dhampire ★★★
()

Временно установить

set (CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so")

Sorcerer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.