我加入了一个已经存在的(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
添加到搜索路径中。如果我将鼠标悬停在#include "extra.h"
项目的.h文件中,我总会得到一个弹出窗口“extra.h:没有这样的文件或目录”。
在KDevelop中没有问题,qmake也得到了它。造物主的问题是什么(我使用的是2.8,还试过3.0)
非常感谢任何帮助: - )
康拉德
#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
}
答案 0 :(得分:2)
我知道我的答案很晚,但我遇到了同样的问题,并且在很多不同的帖子中都没有解决方案,但后来我找到了一个适合我的解决方案:
您必须在.pro文件中添加正在使用的模块:
例如,我想使用#include<QtSql>
模块,但没有任何效果。
编译器找不到此文件。我发现我能够#include<QtSql/QSqlDatabase>
(以及在QtSql中声明的所有类型),但是我得到了"undefined reference"
错误。
解决方案:您必须在以下行中添加您在.pro文件中使用的模块:
QT = core gui
(这是默认情况下我的样子) 这就是我现在的样子以及它对我有用的方式:
QT = core gui sql
希望这可以帮助那些遇到同样问题的人。
这适用于Windows以及Ubuntu!
答案 1 :(得分:0)
您还应该在.pro文件中包含HEADERS。
HEADERS += ../../gui/extra.h
执行此操作后,保存项目,让它解析。然后删除您现有的构建文件夹(不要只是清理),然后尝试重新构建。
答案 2 :(得分:0)
我有同样的问题,我的问题是标题和源之间的空行:
HEADERS += \
#<- 1- this line was first problem
blabla.h \ #<- 2- and added $$PWD here too
我将其更改为:
INCLUDEPATH += $$PWD
HEADERS += \
$$PWD/qquickgridstar.h \