LINUX.ORG.RU

QtCreator: зависимости запускаемого приложения

 ,


0

2

Есть приложение, которое зависит от разделяемой библиотеки, которая в свою очередь зависит еще от двух библиотек. Структура такая:

myapp <- libmyapp.so |<- libfoo.so
                     |<- libbar.so
Приложение и библиотеки находятся в одном проекте, оформлены в виде подпроектов. Чтобы myapp запускался, в переменную среды PATH надо добавить путь, где собрались libmyapp.so, libfoo.so и libbar.so. В настройках проекта есть галочка «Добавить путь к собираемой библиотеке в PATH», и она почти работает. Она добавляет в PATH путь к libmyapp.so, потому что бинарь напрямую от неё зависит и с ней линкуется (она упомянута в переменной LIB в myapp.pro). А вот зависимости либы автоматом не подхватываются. Можно ли заставить QtCreator автоматом добавлять их пути в PATH, или хотя бы явно руками прописать в myapp.pro, зависимости, чтобы они таки добавлялись в PATH?

Пока решил ручной правкой PATH, но это ж неудобно, к тому же при переключении Debug/Release надо перенастраивать.

★★★★

Чтобы myapp запускался, в переменную среды PATH надо добавить путь, где собрались libmyapp.so, libfoo.so и libbar.so.

Бибилотеки подтягиваются не из PATH, а из LD_LIBRARY_PATH. Это тебе не dll в винде

annulen ★★★★★ ()

По правильному у libmyapp.so должен быть rpath до libfoo.so и libbar.so

annulen ★★★★★ ()

Если cmake, то
ADD_SUBDIRECTORY + TARGET_LINK_LIBRARIES.

В qmake есть аналоги.

ymuv ★★★★ ()
Ответ на: комментарий от UVV

Это видел, не то. У меня не деплой, а запуск только что собранного прямо из папки, где собиралось.

WRG ★★★★ ()
Ответ на: комментарий от WRG

Дополню, в qmake rpath задает переменная QMAKE_RPATHDIR. И да, libmyapp.so должна сама находить требуемые библиотеки без вмешательства в LD_LIBRARY_PATH (самый удобный метод - это настройка rpath у libmyapp.so).

rumgot ★★★★★ ()
Последнее исправление: rumgot (всего исправлений: 3)

В общем, под онтопиком rpath делает то, что нужно. Под винду как-то придётся колхозить, rpath там нету.

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