0

我启动了一个程序,其中包含一个库(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 环境变量链接。例如

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/

但这也行不通。(我也用一个 $ 和两个 $ 符号尝试了每一次尝试......)

4

1 回答 1

0

编辑:我只记得你可以使用$$(HOME)which 将在 qmake 执行期间读取环境变量,所以你只需要()在 HOME 周围添加。使用$_PRO_FILE_PWD_仍然是一个很好的做法,但我认为最后一个选项是一种解决方法,而不是简单的解决方案。


您可以尝试使用$$_PRO_FILE_PWD_,此变量指向.pro文件位置,并创建相对于项目文件的路径。还要检查qmake 变量以获取其他参考。

或者你可以这样做:

HOME = $$system(echo $HOME)
message($$HOME)
LIBS += -L$$HOME ...

关于$$system 链接

于 2014-08-25T11:25:25.443 回答