C++ 在.pro文件中是否可以使用Qt安装路径变量?
我想复制一个音频插件到我的目标目录,因为我需要它的部署 它位于C++ 在.pro文件中是否可以使用Qt安装路径变量?,c++,linux,qt,deployment,C++,Linux,Qt,Deployment,我想复制一个音频插件到我的目标目录,因为我需要它的部署 它位于\gcc\plugins\audio 我不知道可以使用什么变量来引用/pro文件中的安装路径 我要添加的代码行如下所示: QMAKE_PRE_LINK += cp $$PATH_TO_QT_INSTAL/gcc/plugins/audio/* $$DESTDIR/lib || :; 有一个名为%{CurrentProject:QT_INSTALL_BINS}的环境变量,它让我可以使用$$PATH_to_QT_INSTAL/gcc/b
\gcc\plugins\audio
我不知道可以使用什么变量来引用/pro文件中的安装路径
我要添加的代码行如下所示:
QMAKE_PRE_LINK += cp $$PATH_TO_QT_INSTAL/gcc/plugins/audio/* $$DESTDIR/lib || :;
有一个名为%{CurrentProject:QT_INSTALL_BINS}
的环境变量,它让我可以使用$$PATH_to_QT_INSTAL/gcc/bin
,但我似乎只能在QT creator gui构建设置中使用它,这对我没有好处,因为这些设置位于.pro.user文件中。为什么qt没有一个通用的构建设置机制:(…(这只是一个附带问题,不需要回答)
我的问题是如何在我的pro文件中引用qt安装路径,是否有一个变量可以这样做,或者其他任何方式?对于Qt4和Qt5,看起来像
$[qt\u install\u LIBS]
是您想要的?无法直接确认这是否有效
请参阅和。另一种解决方案(可能不像上面的$[QT_INSTALL_LIBS]那样花哨),但我已经使用了很长时间:
TEMPNAME = $${QMAKE_QMAKE}
QTPATH = $$dirname(TEMPNAME)
然后您可以像这样引用它(例如访问一些私有标题)或复制内容:
INCLUDEPATH += $$QTPATH/../../Src/qtbase/src/sql/kernel
变量
QT\u INSTALL\u PREFIX
似乎是您想要的,但它在很大程度上取决于QT的安装方式
要根据您感兴趣的确切qt目录进行更多微调,以下命令将为您提供qt持久属性的详尽列表:
/path/to/qmake -query
# Output
# QT_INSTALL_PREFIX:/path/to/Qt
# QT_INSTALL_ARCHDATA:...
# ...
例如,这里列出了已经提到的QT\u INSTALL\u LIBS
。一旦找到与您的用例对应的变量,您就可以像前面提到的那样在.pro文件中使用它,例如使用$[QT\u INSTALL\u PREFIX]
注意:从中,方括号应用于qmake属性($[]
)
版本:使用Qt 5.6.2和qmake 3.0进行测试您可以通过运行
qmake-query Qt_INSTALL_BINS
命令来获取bin目录的路径,但我不知道这对您有什么帮助。嗯……实际上这给了我一个好主意。我已经有了一个deployQt.sh脚本,它使用ldd找到所有需要的Qt库并复制它们到我的lib文件夹…所以我可能可以将你的qmake query命令添加到其中。让我试试,如果它有效,我会让你知道,你可以把它作为一个答案,谢谢。另一方面,如果你有权访问qmake
你知道它的路径,那就是QT_安装箱。@vahancho我不明白你的意思,我可以使用QT_吗在某个地方暂停?它似乎不是pro文件中填充的变量?您说过,您可以将qmake query命令添加到shell脚本中。这意味着您已经知道要调用它的qmake可执行文件的路径,对吗?如果是,该路径就是Qt-bin目录的路径,qmake位于该目录下。因此,您可以定义脚本中的环境变量,以便可以从pro文件中获得它。非常感谢,这正是我想要的。事实上,由于我想要插件目录(来自您引用的文档):消息(插件:$$$[QT\u INSTALL\u plugins])
。我现在使用qt5.5,但格式是$[]
不起作用,但是$[]
很好-不确定这是否适用于更高版本的Qt?不,我不是一直在阅读第一个链接:看起来糟糕的论坛软件正在删除/折叠双-$(那里有一条注释表明这一点)。我编辑了我的答案以供将来参考。谢谢,您的解决方案对我来说非常有用-我使用了QT_PLUG\u PATH=$$dirname(QMAKE_QMAKE)/../plugins
so+1,但我必须将答案提供给eclarkso,因为方括号内的变量列表正好满足了我的需要。