web-dev-qa-db-ja.com

Qmakeはそれらを見つけることができますが、Qt Creatorがインクルードパスでインクルードヘッダーを見つけないのはなぜですか

既存の(オープンソースの)Qt 4プロジェクトに参加して、いくつかの機能を追加しました。プロジェクトは、Qt 4.8.5がインストールされたLinux Slackwareで完全にコンパイルおよび実行されます。 IDE最初にKDevelopを使用しました(Slackwareに付属))が、QtプロジェクトファイルはKDevelopでサポートされていません(主に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

「dir0 /」にあるgui.pri

# 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

}
14
user3122343

私は答えが遅いことを知っていますが、同じ問題があり、さまざまな投稿の解決策はありませんでしたが、解決策を見つけました。

使用しているモジュールを.proファイルに追加する必要があります。

たとえば、#include<QtSql>モジュールですが、何も機能しませんでした。コンパイラはこのファイルを見つけられませんでした。私は#include<QtSql/QSqlDatabase>(およびQtSqlで宣言されているすべての型)ただし、"undefined reference"エラー。


ソリューション: .proファイルで使用しているモジュールを次の行に追加する必要があります。

QT = core gui

(これは私にとってデフォルトでどのように見えたかです)これは私にとって今どのように見えるか、そして私にとってそれがどのように機能したかです:

QT = core gui sql

これが同じ問題を抱えている他の誰かを助けることを願っています。


これはWindowsとUbuntuで機能しました!

2
ElectRocnic

Premakeとmakeを使用してプロジェクトをビルドし、QtCreatorをIDEとして使用しています。ヘッダーのみのライブラリGLMを使用して、同じ問題が発生しました。私のソースコードには次の行が含まれています:#include <glm/glm.hpp>。エラーなしでコンパイルされましたが、QT-Creatorはファイルを見つけることができなかったため、CTRLキーを押しながらライブラリが提供するいくつかの関数をクリックしても、ファイルまたはそれに含まれる関数にジャンプできませんでした。

私のプロジェクトフォルダーには、「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
2
Boris Month

HEADERSも.proファイルに含める必要があります。

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

これを行った後、プロジェクトを保存し、解析させます。次にdelete既存のビルドフォルダー(単にクリーンアップしないでください)を再ビルドします。

1
Abhishek Bansal

私は同じ問題を抱えていました私の問題はヘッダーとソースの間の空の行でした:

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

これに変更しました:

INCLUDEPATH += $$PWD

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