Linux QT Creator C++:如何与 $$HOME 链接?

Posted

技术标签:

【中文标题】Linux QT Creator C++:如何与 $$HOME 链接?【英文标题】:Linux QT Creator C++: How to link with $$HOME? 【发布时间】:2014-08-25 08:35:30 【问题描述】:

我在/home/MYUSERNAME/EB/IDA/Earlybite/

中启动了一个包含库 (IDA) 的程序

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/

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

【问题讨论】:

With $$HOME: libIDA not found, ida.h: no such file or directory 【参考方案1】:

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


您可以尝试使用$$_PRO_FILE_PWD_,此变量指向.pro 文件位置,并创建相对于项目文件的路径。另请查看qmake Variables 以获取更多参考资料。

或者你可以这样做:

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

关于$$systemlink

【讨论】:

我查看了您的链接指向的网站,似乎 $$HOME 将永远无法工作......(确认?)。 HOME 在那里找不到。我还尝试了 message($$HOME) = "" (变体)只有 message($$_PRO_FILE_PWD_) 和 message($$PWD) 会返回一个有效值。 $$HOME/... 永远不会工作,是吗? @Earlybite 是的,但看看我的编辑回答。 @Earlybite 是的,这是一个技巧,我使用系统调用从终端获取 $HOME 变量。但我找到了另一种解决方案,请查看。 不知道配置文件可以这样编辑! $$HOME 就是由这个创建的,是吗?并且不知道有可能收到消息......三个有用的部分。谢谢!顺便说一句:我如何添加@Name? @Earlybite 是的,您可以在 .pro 文件中创建自己的变量。如果您想了解更多信息,应该查看 QMake 文档。

以上是关于Linux QT Creator C++:如何与 $$HOME 链接?的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++ 编译器 2012 年 11 月 CTP 与 Qt Creator for C++11

如何使用 Qt Creator 将 C++ 头文件添加到 Qt 项目

qt creator 中如何使用c++库

Qt Creator 作为嵌入式 Linux 的调试系统

QT-creator 中架构 x86_64 的未定义符号

如何建立Qt Creator交叉编译嵌入式Linux