Qmake и прохождение $ORIGIN к опции компоновщика -rpath

Я хотел бы использовать опцию -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?

Ответ 1

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

QMAKE_RPATHDIR += $ORIGIN/../mylibs

Ответ 2

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

QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN/../mylibs\'' 

Ответ 3

ДОЛЛАР = $

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

Ответ 4

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

QMAKE_RPATHDIR += lib

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