![](/img/trans.png)
[英]Qt Creator Clang Code Model can't find included header in included header
[英]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.