Я запускаю программу, которая включает в себя библиотеку (IDA) в
/home/MYUSERNAME/EB/IDA/Earlybite/
Библиотека IDA имеет две папки:
/home/MYUSERNAME/EB/IDA/IDA/Includes/ (for h-file)
/home/MYUSERNAME/EB/IDA/IDA/Libs/ (for so-files)
Это ссылка, которая работает:
LIBS += -L$$PWD/../IDA/Libs/ -Wl,-rpath=$$PWD/../IDA/Libs/ -lIDA -ldl -lpthread -lrt
INCLUDEPATH += $$PWD/../IDA/Includes/
Проблема в том, что PWD показывает только путь, по которому начинается ранний прикус. В этом случае
/home/MYUSERNAME/EB/IDA/Earlybite/
, но если программа запускается, например, в /home/MYUSERNAME/EB/IDA/
… связь не будет работать.
Поэтому я попытался установить связь с переменной окружения HOME. Например.
LIBS += -L$$HOME/EB/IDA/IDA/Libs/ -Wl,-rpath=$$HOME/EB/IDA/IDA/Libs/ -lIDA -ldl -lpthread -lrt
INCLUDEPATH += $$HOME/EB/IDA/IDA/Includes/
Но это не работает.
Я тоже пробовал
LIBS += -L/home/$$USER/EB/IDA/IDA/Libs/ -Wl,-rpath=/home/$$USER/EB/IDA/IDA/Libs/ -lIDA -ldl -lpthread -lrt
INCLUDEPATH += /home/$$USER/EB/IDA/IDA/Includes/
Но это тоже не работает.
(Я также пробовал каждую попытку с одним $ и двумя символами $ …)
Редактировать: Я только что вспомнил, что вы можете использовать $$(HOME)
который будет читать переменную окружения во время выполнения qmake, так что вам просто нужно добавить ()
вокруг дома. С помощью $_PRO_FILE_PWD_
по-прежнему хорошая практика, но я думаю, что последний вариант — это обходной путь, а не простое решение.
Вы можете попробовать и использовать $$_PRO_FILE_PWD_
эта переменная указывает на .pro
расположение файла и создайте путь относительно файла проекта. Также проверьте Переменные qmake для дополнительных ссылок.
Или вы можете сделать:
HOME = $$system(echo $HOME)
message($$HOME)
LIBS += -L$$HOME ...
Около $$system
ссылка на сайт