Qmake и передача $ ORIGIN в опцию компоновщика -rpath - PullRequest
14 голосов
/ 22 сентября 2011

Я хотел бы использовать опцию -rpath linker, чтобы задать путь поиска .so.Я бы хотел, чтобы он поискал [app_path]/../lib.Я пытался добавить это в мой файл qmake .pro:

QMAKE_LFLAGS += -Wl,-rpath=$ORIGIN/../lib/

Но qmake связывает мой проект следующим образом:

g++ -Wl,-rpath=RIGIN/../lib/ -Wl,-O1 -o myoutput main.o [...]

Как мне выйти из $ORIGIN?

Ответы [ 4 ]

22 голосов
/ 22 сентября 2011

Я нашел здесь способ избежать этого:

QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN/../mylibs\'' 
11 голосов
/ 04 января 2013

Если вы хотите, чтобы $ORIGIN (должным образом) оценивался во время сборки, вы можете просто добавить это в ваш .pro файл:

QMAKE_RPATHDIR += $ORIGIN/../mylibs
3 голосов
/ 02 октября 2017

Это действительно старый вопрос, но для людей, попадающих сюда через поиск: методы, описанные в старых ответах, больше не нужны.Современные версии Qt (в моем случае 5.9) позволяют вам просто использовать это:

QMAKE_RPATHDIR += lib

Это автоматически добавит необходимые записи (включая $ORIGIN и -Wl,-z,origin, где это необходимо) в make-файл, так какПока вы используете относительный каталог.Это означает, что lib будет производить необходимые "исходные" записи, в то время как что-то вроде /lib не будет.Любая относительная директория, которую вы добавляете в QMAKE_RPATHDIR, будет сделана относительно $ORIGIN автоматически.

1 голос
/ 18 марта 2014

DOLLAR = $

QMAKE_LFLAGS + = -Wl, -rpath = $$ {DOLLAR} $$ {DOLLAR} ORIGIN /../ myLibs

...