【发布时间】:2015-11-06 22:06:25
【问题描述】:
我有一个用 cmake 编译的 Qt5 代码,没有问题。然后我决定尝试 qmake 并遇到了问题。
看起来 qmake 以某种方式使用 Qt4 而不是 Qt5,尽管 我认为它被配置为运行 Qt5。该代码包含一些严格的 Qt5 元素。 这是我从终端得到的:
首先,我有 Qt4 和 Qt5:
wave@wave-T61:~$ qtchooser -l
4
5
default
qt4-i386-linux-gnu
qt4-x86_64-linux-gnu
qt4
qt5-x86_64-linux-gnu
qt5
显示 qmake 版本:
wave@wave-T61:~$ qmake -v
QMake version 3.0
Using Qt version 5.4.2 in /usr/lib/x86_64-linux-gnu
我可以通过设置来回切换:
wave@wave-T61:~$ export QT_SELECT=qt4
wave@wave-T61:~$ qmake -v
QMake version 2.01a
Using Qt version 4.8.6 in /usr/lib/x86_64-linux-gnu
wave@wave-T61:~$ export QT_SELECT=qt5
wave@wave-T61:~$ qmake -v
QMake version 3.0
Using Qt version 5.4.2 in /usr/lib/x86_64-linux-gnu
但是,无论我设置的 qmake 版本如何,我总是得到 Qt4 的外观,这与我使用 cmake 得到的完全不同(看起来应该如此)。
我在做什么或假设错了?
感谢并为冗长的帖子感到抱歉。
编辑。
嗯,我有两个 Qt5 库源文件夹... cmake 配置为查看我安装 Qt5 的位置 - /opt/Qt/5.5/gcc_64/include/ - 这很好。 但后来我安装了 qmake 和 QCreator,突然间,还有另一个,这是 qmake 正在寻找的地方 - 在 /usr/include/x86_64-linux-gnu/qt5/ 中。
现在,为什么会这样以及为什么第二组 Qt5 库可以像 Qt4 一样工作,这超出了我的理解。希望我可以重定向 qmake 并使其可用。
编辑 2. 看起来我运气不好,回到 cmake。来自 Qt 文档:
QT_INSTALL_PREFIX - 构建此 qmake 的 Qt 版本所在的位置。 这些内置属性不能有版本前缀,因为它们没有版本化,每个版本的 qmake 都有自己的内置这些值集。
【问题讨论】:
-
重置 QT_SELECT 变量时是否创建另一个构建树?像这样:
cd build && rm -r * && qmake .. && make你也可以尝试运行make VERBOSE=1来查看到底是什么链接。 -
是的,我什么都是从零开始的。当使用 qmake V.3 (Qt5) 编译时,Makefile 根本没有提到 qt4,只有 qt5。我想我应该比较一下 qmake 和 cmake 的 makefile,看看有什么不同。
-
您的
/opt/Qt/5.5/gcc_64/前缀中有qmake可执行文件吗?您可以尝试配置 QtCreator 以使用此版本,如本指南中的doc.qt.io/qtcreator/creator-project-qmake.html -
@wavelike 你不必为此感到难过。如果 Vitalii Minnakhmetov 发布答案,您可以在任何声望级别接受它。否则,您可以回答自己的问题(如果您认为它对其他人有用),或者我们可能会将其删除为不可复制。请不要将答案编辑到问题本身或在标题中添加
[SOLVED]。 -
"我有什么理由应该回答我自己的问题,因为我已将所有解释都放在我编辑过的帖子中?" 是的,有。表明本网站上的问题已得到解答的方法是接受答案。它导致它在索引页面中被标记为已回答。我鼓励@VitaliiMinnakhmetov 发布答案,然后您可以接受。如果他没有,请随时自己发布答案并接受。