Правильно управлять общими библиотеками с CMake

Я пытаюсь связать сборку cmake с двумя общими библиотеками, связывание происходит, но RPATH указывает на абсолютный путь одной из двух библиотек, в то время как readelf вывод неверен для другого.

Я сделал следующее:

add_library(foo SHARED IMPORTED)
set_target_properties(foo
PROPERTIES IMPORTED_LOCATION ${LIBS_DIRECTORY}/foo/libfoo.so
)

add_library(bar SHARED IMPORTED)
set_target_properties(bar
PROPERTIES IMPORTED_LOCATION ${LIBS_DIRECTORY}/foo/libbar.so
)

target_link_libraries(myprogram foo bar)

Это работает, и связывание происходит, но readelf печатает следующее:

0x0000000000000001 (NEEDED)             Shared library: [../../../libs/foo/libfoo.so]
0x0000000000000001 (NEEDED)             Shared library: [libbar.so]
0x000000000000000f (RPATH)              Library rpath: [/home/user/test/trunk/libs/foo:/home/user/test/trunk/libs/bar]

Так что в основном одна из двух библиотек (но только одна, и это не имеет смысла) имеет абсолютный путь, в то время как rpath содержит оба полных пути (это не то, что я хочу сделать, так как я хочу отправить исполняемый файл с двумя библиотеками в одной и той же папке (или не более).

Я что-то упускаю тривиально?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]