既存の(オープンソースの)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
}
私は答えが遅いことを知っていますが、同じ問題があり、さまざまな投稿の解決策はありませんでしたが、解決策を見つけました。
使用しているモジュールを.proファイルに追加する必要があります。
たとえば、#include<QtSql>
モジュールですが、何も機能しませんでした。コンパイラはこのファイルを見つけられませんでした。私は#include<QtSql/QSqlDatabase>
(およびQtSqlで宣言されているすべての型)ただし、"undefined reference"
エラー。
ソリューション: .proファイルで使用しているモジュールを次の行に追加する必要があります。
QT = core gui
(これは私にとってデフォルトでどのように見えたかです)これは私にとって今どのように見えるか、そして私にとってそれがどのように機能したかです:
QT = core gui sql
これが同じ問題を抱えている他の誰かを助けることを願っています。
これはWindowsとUbuntuで機能しました!
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
HEADERSも.proファイルに含める必要があります。
HEADERS += ../../gui/extra.h
これを行った後、プロジェクトを保存し、解析させます。次にdelete既存のビルドフォルダー(単にクリーンアップしないでください)を再ビルドします。
私は同じ問題を抱えていました私の問題はヘッダーとソースの間の空の行でした:
HEADERS += \
#<- 1- this line was first problem
blabla.h \ #<- 2- and added $$PWD here too
これに変更しました:
INCLUDEPATH += $$PWD
HEADERS += \
$$PWD/qquickgridstar.h \