簡體   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