Я запускаю программу, которая включает библиотеку (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 показывает только путь, в котором начинается Earlybite. В этом случае /home/MYUSERNAME/EB/IDA/Earlybite/
, но если программа запускается, например, в /home/MYUSERNAME/EB/IDA/
..., /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, поэтому вам просто нужно добавить ()
к HOME. Использование $_PRO_FILE_PWD_
по-прежнему является хорошей практикой, но последние варианты - обходное решение, а не простое решение, я думаю.
Вы можете попробовать и использовать $$_PRO_FILE_PWD_
, эта переменная указывает на расположение файла .pro
и создает путь относительно файла проекта. Также проверяйте переменные qmake для дополнительных ссылок.
Или вы можете сделать:
HOME = $$system(echo $HOME)
message($$HOME)
LIBS += -L$$HOME ...
О $$system
ссылке $$system