【问题标题】:QtCreator unable to find Qxt headers on Linux?QtCreator 无法在 Linux 上找到 Qxt 头文件?
【发布时间】:2014-07-12 06:24:10
【问题描述】:

我正在开发一个 Qt5/QtQuick/QML 应用程序,当应用程序被隐藏或失焦时,它应该使用 QxtGlobalShortcut 进行热键控制。我一直在 Linux 上使用 QtCreator 开发它,而且我对 Linux 开发并不完全熟悉,所以我可能错过了一些简单的东西。

首先,我尝试克隆 Qxt git repo from here 的主分支。但是由于某种原因,./configure 未能根据我从 makemake install 得到的错误创建 makefile。我在从源代码构建其他人的项目/库方面不是很有经验,而且我从 ./configure 获得的输出不够具体,无法让我弄清楚发生了什么......

因此,我决定从 (X)ubuntu 的 APT 存储库中获取 libqxt-dev。完成安装后,我将这些行添加到我的 QtCreator 项目文件的底部:

INCLUDEPATH = usr/include

CONFIG  += qxt
QXT     += core gui

在完全基于 Qxt 文档的示例设置了一个基本的全局快捷方式之后。我有一些编译错误。首先,Qxt好像用的:

#include <QxtGlobalShortcut>

但是 QtCreator 找不到那个文件,所以我把它改成了这个:

#include <qxt/QxtGui/QxtGlobalShortcut>

现在它可以找到 Global Shortcut 类头了,QtCreator 不再抱怨我了。不幸的是,QtCreator 在编译时弹出了这个错误信息:

/usr/include/qxt/QxtGui/qxtglobalshortcut.h:28: error: qxtglobal.h: No such file or directory

我认为这是由我的项目的 INCLUDE 路径或其他问题引起的,但即使尝试将我的项目的 INCLUDE 路径更改为:

INCLUDEPATH = usr/include
        usr/include/qxt/QxtCore
        usr/include/qxt/QxtGui

CONFIG  += qxt
QXT     += core gui

我仍然收到相同的错误消息,即无法找到 QxtGlobal.h(#included 在 QxtGlobalShortcut.h 中).. 所以,我真的不确定我做错了什么,而且我不知道如何解决这个问题。 希望有人可以帮助我了解我跳过了哪个步骤,以便我可以继续编码!谢谢!

编辑:这是我的整个 Qt 项目 .pro 文件的内容:

TEMPLATE = app

QT += qml quick

SOURCES += main.cpp \
    Gamepad.cpp \
    Script.cpp \
    System.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

HEADERS += \
    Gamepad.h \
    Script.h \
    System.h

LIBS += -L/usr/lib -lSDL2

CONFIG  += qxt
QXT     += core gui

LIBS 之前的所有内容都是由 QtCreator 为我的项目自动生成的。我根据 SDL2 和 Qxt 的用户说明添加了 LIBS、CONFIG 和 QXT 元素。

【问题讨论】:

    标签: c++ linux qt qt-creator libqxt


    【解决方案1】:

    这是一个大问题:

    INCLUDEPATH = usr/include
    

    1) 您使用的是来自当前工作目录的相对路径,而不是来自文件系统根目录的/usr/include

    2) 您正在删除 INCLUDEPATH 中的所有内容,因为您设置而不是附加 +=

    3) 无论如何都不需要添加该行,因为默认情况下会查找 /usr/include。

    4) 即使不是,你也有#include "qxtglobal.h" 而不是#include &lt;qxtglobal.h&gt;

    我建议删除该行,然后它应该就可以工作了。

    【讨论】:

    • 嗯.. 我尝试删除该行,但仍然失败并出现同样的错误。我将使用我的 .pro Qt 项目文件的精确副本更新我的帖子。不幸的是,#include "qxtglobal.h" 不是我的代码的一部分,但它是我尝试使用的 Qxt 库中 QxtGlobalShortcut 类的一部分。
    • @MrKatSwordfish: 也删除-L/usr/lib... 显然,您还必须重新运行 qmake,如果您的 libqxt 是针对 Qt 4 构建的,您将无法使用 Qt 5 无论如何。
    • 我也删除了该行。不过仍然有问题。我刚刚从我的发行版(Xubuntu 64bit 14.4)存储库中获取了 libqxt-dev。有什么方法可以检查它支持哪个版本的 Qt?如上所述,我之前从源代码构建 libqxt 时遇到了问题。感谢您迄今为止的帮助。
    • @MrKatSwordfish: ldd -r /usr/lib/.. -> 检查一个二进制文件,但很可能是 Qt 4。即使在最前沿的 Archlinux 上也是 Qt 4。
    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2017-11-05
    • 2012-08-19
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多