【问题标题】:Is there a Qt install path variable that I can use in the .pro file?我可以在 .pro 文件中使用 Qt 安装路径变量吗?
【发布时间】:2016-09-24 00:05:49
【问题描述】:

我想将一个音频插件复制到我的目标目录,因为我需要它进行部署。

它住在<PATH_TO_QT_INSTALL>\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 安装路径,是否有一个变量可以做到这一点,或者任何其他方式?

【问题讨论】:

  • 你可以通过qmake -query QT_INSTALL_BINS命令获取bin目录的路径,但我不知道它对你有什么帮助。
  • 嗯....实际上这给了我一个好主意。我已经制作了一个 deployQt.sh 脚本,它使用 ldd 来查找所有需要的 qt 库并将它们复制到我的 lib 文件夹中......所以我可以将你的这个 qmake 查询命令添加到其中。让我试试看,如果有效,我会告诉你,你可以把它作为答案,谢谢。
  • 另一方面,如果你可以访问qmake,你就知道它的路径,也就是QT_INSTALL_BINS。
  • @vahancho 我不明白你的意思,我可以在某处使用 QT_INSTALL_BINS 吗? - 它似乎不是 pro 文件中的填充变量?
  • 您说过,您可以将 qmake 查询命令添加到您的 shell 脚本中。这意味着您已经知道调用它的 qmake 可执行文件的路径,对吗?如果是这样,则该路径是 Qt bin 目录的路径,qmake 所在的位置。因此,您可以在脚本中定义一个环境变量,以便可以从 pro 文件中使用它。

标签: c++ linux qt deployment


【解决方案1】:

变量QT_INSTALL_PREFIX 似乎是您想要的,但它在很大程度上取决于Qt 的安装方式。

要根据您感兴趣的确切 qt 目录进行更多微调,以下命令将为您提供 qt 持久属性的详尽列表:

/path/to/qmake -query

# Output
# QT_INSTALL_PREFIX:/path/to/Qt
# QT_INSTALL_ARCHDATA:...
# ...

例如已经提到的QT_INSTALL_LIBS 列在那里。一旦找到与您的用例相对应的变量,您就可以在您的 .pro 文件中使用它,就像已经提到的那样,例如 $$[QT_INSTALL_PREFIX]

注意:从qmake documentation 开始,qmake 属性应使用方括号 ($$[])

版本:使用 Qt 5.6.2 和 qmake 3.0 测试

【讨论】:

    【解决方案2】:

    对于 Qt4 和 Qt5,看起来 $$[QT_INSTALL_LIBS] 是你想要的吗?虽然无法直接确认这是否有效。

    参见https://forum.qt.io/topic/65778/qmake-and-qt-installation-root-directory/2http://doc.qt.io/qt-4.8/qmake-advanced-usage.html

    【讨论】:

    • 非常感谢,这正是我想要的。事实上,因为我想要插件目录(来自您引用的文档):message(Plugins: $$[QT_INSTALL_PLUGINS])。我目前使用 qt5.5,但格式 $[] 不起作用,但是 $$[] 很好 - 不确定这是否适用于更晚的 Qt 版本?
    • 不,我没有在第一个链接中一直阅读:看起来糟糕的论坛软件正在删除/折叠双-$(那里有这样的评论)。我编辑了我的答案以供将来参考。
    【解决方案3】:

    另一种解决方案(可能不像上面的 $[QT_INSTALL_LIBS] 那样花哨,但我已经用了很长时间了:

    TEMPNAME = $${QMAKE_QMAKE}
    QTPATH = $$dirname(TEMPNAME) 
    

    然后您可以像这样引用它(例如访问一些私有标头)或复制内容:

    INCLUDEPATH += $$QTPATH/../../Src/qtbase/src/sql/kernel
    

    【讨论】:

    • 谢谢,您的解决方案对我来说非常有用 - 我使用了 QT_PLUG_PATH = $$dirname(QMAKE_QMAKE)/../plugins 所以 +1,但我不得不将答案交给 eclarkso,因为方括号内的变量列表正好满足了我的需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2012-07-23
    • 2022-07-08
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多