web-dev-qa-db-ja.com

qmakeプロジェクトファイルのINCLUDEPATHが機能しない

Qmakeプロジェクトへのインクルードに問題があります。私の.proファイルには次のものがあります:

INCLUDEPATH += "C:\OpenCV\build\include"

そして私のcppで:

#include <opencv\cv.h>

コンパイラーはエラーを示します。

インクルードファイルを開けません: 'opencv\cv.h':そのようなファイルまたはディレクトリはありません

しかし、私がこれを私のcppで書くと:

#include "C:\OpenCV\build\include\opencv\cv.h"

できます!

Qt Creator内からプロジェクトをビルドします。私は何を間違えていますか?

18
user2794529

Proファイルの変更を検証するには、qmake(build-> run qmake)を実行する必要があります。 Qt creator外部ライブラリの追加(まだ:インクルードファイルを開けません: 'GL/glew.h')

17
Steve James

これが私のプロファイルの1つです。

    # Blah Application

TEMPLATE  = app
CONFIG   += qt console staticlib debug_and_release
QT       -= gui
QT       += network sql xml
TARGET    = blah

CONFIG(debug, debug|release){
    DESTDIR = debug
    LIBS += -L../../../lib/core/debug -lcore
} else {
    DESTDIR = release
    LIBS += -L../../../lib/core/release -lcore
}
DEPENDPATH  += . ../../lib ../../../lib/core
INCLUDEPATH += . ../../lib ../../../lib/core

# Library files
HEADERS += mtBlahRTP.h
SOURCES += mtBlahRTP.cpp

# Input
HEADERS +=
SOURCES += main.cpp

インクルードパスは、libファイルのRELATIVEディレクトリを指します。 mtBlahRTP.hおよびmtBlahRTP.cppは../../libにあります

3
ldgorman

作成している唯一の問題は、OpenCVライブラリを誤ってリンクしていることです。ここに記載されている他の回答は機能する場合と機能しない場合がありますが、Qt Creator内の「Add Library」ウィザードを使用してこの問題を解決する確実な方法を別のスレッドに投稿しました: https://stackoverflow.com/a/ 51914928/10245006

1
IntenseCorona

私は2つのステップを実行する必要がありました:qmakeを(再)実行し、プロジェクト全体を再ビルドします-その場合のみ、INCLUDEPATH設定が正しく考慮されました。 (Windows上のQtCreator 3.5および3.6(Qt 5.5およびQt 5.6)を使用。)

1
Dynamo72

同様の問題に遭遇しましたが、QtCreator IDEはqmakeの結果を再読み込みせず、「開くことができません」というメッセージを更新していません。問題のファイルを閉じて、再度開く-エラーが表示されなくなっていることがわかります。

1
Ian Frisbie

エラーが発生していました:

canserialcomm.o: In function `CanSerialComm::CanSerialComm()':
canserialcomm.cpp:(.text+0xc1): undefined reference to `vtable for CanSerialComm'

原因は、そのコンストラクタが宣言されているcanserialcomm.hが見つからなかったことが原因であることがわかりました。これは、プロジェクトファイルでINCLUDEPATHがそのヘッダーファイルを含むディレクトリを指しているにもかかわらずです:

INCLUDEPATH += . \
        ..

これを修正するには、ヘッダーファイルを明示的に指定する必要がありました。追加した:

HEADER += ../canserialcomm.h
0
DBedrenko

いくつかのことをする必要があります。最初に、.proファイルでは、次のように、引用符が一度に2つのバックスラッシュを必要とします。

INCLUDEPATH += "C:\\OpenCV\\build\\include\\opencv\\cv.h"

また、次のように.cppファイルの#includeにフロントスラッシュが必要です。

#include <opencv/cv.h>

これが完了したら、ビルドフォルダーを削除します。これは、build-untitled-Desktop_Qt_5_7_0_MSVC2015_32bit-Releaseタイプの非常に複雑な名前を持つフォルダーです。次に、[ビルド]メニューで[qmakeの実行]を押します。これをすべて完了したら、正常にコンパイルされるはずです。

0
Donald Duck

Windowsでは、INCLUDEPATH変数に追加される各ディレクトリの前に-Iを削除する必要があります。例:窓の下:

INCLUDEPATH += "C:\lib\boost_1_61_0" (back-slash)

LinuxおよびMacの場合:

INCLUDEPATH += -I"$$(HOME)/lib/boost_1_61_0" (note the -I and forward-slash)

異なるqmakeバージョンに依存するかどうかはわかりません。しかし、qmakeコマンドを終了した後、Makefileをチェックすると、二重の-Iが問題になります。

0
Brian Ng

どういうわけか、INCLUDEPATH + =がいくつかあると動作しませんでした。ものを1つにまとめると、突然機能しました。

0
Slava

Windowsでmsvcを使用するqt creatorの場合は、二重バックスラッシュを使用する必要があります。 INCLUDEPATH + = C:\\ libcurl \\ libcurl-vc-x64-release-dll-ipv6-sspi-winssl \\ include

これで問題が解決します。

0
Raiden Core