繁体   English   中英

为什么Qt Creator在包含的路径中找不到包含的标题 - 即使qmake能够找到它们

[英]Why doesn't Qt Creator find included headers in included paths - even though qmake is able to find them

我加入了一个已经存在的(opensource-)Qt 4项目来添加一些功能。 该项目使用Qt 4.8.5在Linux Slackware上进行编译和运行。 作为IDE,我首先使用KDevelop(Slackware附带),但KDevelop不支持Qt项目文件(因为它主要使用cmake,我必须使用makefile导入项目)。 现在我想切换到Qt Creator,但无法识别包含(相对)路径中的头文件。 例如,项目文件位于“dir0 / programs / prog1 / prog1.pro”中,一些额外的标题位于“dir0 / gui / extra.h”中。 “dir0 / gui”通过项目文件中的INCLUDEPATH += ../../gui行添加到搜索路径中。 如果我将鼠标悬停在项目的.h文件中的#include "extra.h" ,我总会得到一个弹出窗口“extra.h:没有这样的文件或目录”。

在KDevelop中没有问题,qmake也得到了它。 造物主的问题是什么(我使用2.8,也试过3.0)

任何帮助非常感谢:-)

康拉德


编辑:我刚刚意识到,整个Qt框架也不被qt-creator识别。 当我输入#include "自动完成建议的标题都位于”/ usr / include“或项目目录中。例如,我甚至不能做#include <QtGui>

这可能是什么问题?


EDIT2:项目文件还包括gui.pri和local.pri,它们也被其他几个项目使用。 我尝试压缩文件 - 它仍然编译没有问题。

实际项目文件位于“dir0 / programs / us_convert”

include( ../../gui.pri )
QT           += xml

TARGET        = us_convert

HEADERS       = us_convert_gui.h       \
                us_convert.h           \
                us_convertio.h         \
                us_experiment.h        \
                us_experiment_gui.h    \
                us_selectbox.h         \
                us_intensity.h         \
                us_get_dbrun.h         \
                us_mwl_data.h

SOURCES       = us_convert_gui.cpp     \
                us_convert.cpp         \
                us_convertio.cpp       \
                us_experiment.cpp      \
                us_experiment_gui.cpp  \
                us_selectbox.cpp       \
                us_intensity.cpp       \
                us_get_dbrun.cpp       \
                us_mwl_data.cpp

gui.pri位于“dir0 /”

# Profile include file for applications

!include( local.pri ) error( "local.pri is missing.  Copy from local.pri.template and update variables as appropriate" )

TEMPLATE     = app
DESTDIR      = ../../bin
MOC_DIR      = ./moc
OBJECTS_DIR  = ./obj
VER          = 10

CONFIG       += $$DEBUGORRELEASE qt thread warn

unix {
  LIBS       += -L../../lib -lus_gui -lus_utils
  LIBS       += -lcrypto
  LIBS       += -lqwtplot3d-qt4 -lGLU
  LIBS       += -L$$MYSQLDIR -lmysqlclient
  DEFINES    += INTEL LINUX

  INCLUDEPATH  += $$MYSQLPATH ../../$$QWT3D/include
  INCLUDEPATH  += ../../gui ../../utils $$QWTPATH/include ..
}

而local.pri,也位于“dir0 /”

DEBUGORRELEASE += debug 

unix {

  MYSQLPATH   = /usr/include/mysql/
  QWTPATH     = /usr/local/qwt-5.2.2
  SINGLEDIR   = /usr/lib/qt/qt-solutions/qtsingleapplication/src
  MYSQLDIR    = /usr/include/mysql
  QWT3D = /qwtplot3d-qt4/
  LIBS        += -L/usr/local/qwt-5.2.2/lib -lqwt

}

我使用premake和make来构建我的项目,并使用QtCreator作为IDE。 我使用仅限标题的库GLM遇到了与您相同的问题。 我的源代码包含以下行: #include <glm/glm.hpp> 它编译时没有错误,但是QT-Creator无法找到该文件,因此我无法通过按住CTRL并单击库提供的某些功能来跳转到它或包含的函数。

在我的项目文件夹中,ther是一个名为“Tree.includes”的文件,其中“Tree”是我的QT-Creator项目的名称。 我不得不添加我使用的库的路径,它工作。

usedLibraries/glm/

我的“Tree.includes”文件如下所示:

project/src
usedLibraries/glm/
usedLibraries/glew-1.11.0/include/
usedLibraries/glfw-3.0.4/include/

我的项目文件夹看起来像这样:

.
├── project
│   ├── bin
│   ├── build
│   ├── gcc.txt
│   ├── include
│   ├── Makefile
│   ├── premake4.lua
│   └── src
├── Tree.config
├── Tree.creator
├── Tree.creator.user
├── Tree.files
├── Tree.includes
└── usedLibraries
    ├── glew-1.11.0
    ├── glfw-3.0.4
    └── glm

我知道我的答案很晚,但是我遇到了同样的问题,并且在大量不同的帖子中没有解决方案,但后来我找到了一个适合我的解决方案:

您必须在.pro文件中添加正在使用的模块:

例如,我想使用#include<QtSql>模块,但没有任何效果。 编译器找不到此文件。 我发现我能够#include<QtSql/QSqlDatabase> (以及在QtSql中声明的所有类型)但是,我得到了一个"undefined reference"错误。


解决方案:您必须在以下行中添加您在.pro文件中使用的模块:

QT = core gui

(这是默认情况下我的样子)这就是我现在的样子以及它对我有用的方式:

QT = core gui sql

希望这有助于其他有同样问题的人。


这适用于Windows以及Ubuntu!

您还应该在.pro文件中包含HEADERS。

HEADERS  += ../../gui/extra.h

执行此操作后,保存您的项目,让它解析。 然后删除现有的构建文件夹(不要只是清理),然后尝试重新构建。

我有同样的问题我的问题是标题和来源之间的空行:

HEADERS += \
                     #<- 1- this line was first problem
    blabla.h \       #<- 2- and added $$PWD here too

我改成了这个:

INCLUDEPATH += $$PWD

HEADERS += \
    $$PWD/qquickgridstar.h \

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM