Как избежать сквозной линковки shared библиотек в cmake?
Форум — Development
Доброго времени суток. Подскажите, есть ли возможность сделать цепочную линковку библиотек и исполняемого файла в cmake? На данный момент я пытаюсь написать враппер над библиотекой и уже непосредственно работать с исполняемым файлом через вреппер. В случае если я удалю libmain.so что бы исполняемый файл через ldd указывал что имеет взамисвязь только с libwrapper.so и собственно запускался, но не выполнял никакого полезного действия.
Цепочка выглядит так: output–>libwrapper.so–>libmain.so С данным кодом у меня output смотри напрямую на libmain.so
cmake_minimum_required(VERSION 3.6)
project(example)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_library(main SHARED main.cpp)
add_library(wrapper SHARED wrapper.cpp)
target_link_libraries(wrapper PUBLIC main)
add_executable(output output.cpp)
target_link_libraries(output PRIVATE wrapper ${CMAKE_THREAD_LIBS_INIT} )
Как выглядит ldd output:
linux-vdso.so.1 (0x00007fff60bd4000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd9fb241000)
libmain.so => /home/sysos/Desktop/test/example/build/main.so (0x00007fd9fa852000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd9fa670000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd9fa655000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd9fa463000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd9fb2a7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd9fa314000)
Как выглядит ldd libwrapper.so:
linux-vdso.so.1 (0x00007ffef76a5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f577fa85000)
/lib64/ld-linux-x86-64.so.2 (0x00007f577fc94000)
Заранее спасибо.