[SOLVED] Wrong header file included in project
-
Hello,
I'm having a problem with my project file in QtCreator and haven't been able to figure it out.
I have a directory with a project, that uses a hardware device and its libraries; as I don't have always the hardware available, I've make a project with some dummy object in a different directory to test my code. I have used this solution before without a problem, but for some reason is not working in this case.
My directories look like this:
@DiagnosticBox <--- This directory is used when the hardware is present
-labjack.h and labjack.cpp- adminpanel.h and adminpanel.cpp
- connectiondialog.h and connectiondialog.cpp
- labjackUD.h <---- This is the library header of the hardware
testDiagnosticBox
-labjack.h and labjack.cpp <---- This class is a dummy class, with no hardware dependencies@My .pro file is:
@
QT += core gui networkTARGET = testDiagnosticBox
INCLUDEPATH += ./DiagnosticBox/TEMPLATE = app
SOURCES += main.cpp
mainwindow.cpp
../DiagnosticBox/adminpanel.cpp
../DiagnosticBox/connectiondialog.cpp
labjack.cpp \HEADERS += mainwindow.h
../DiagnosticBox/adminpanel.h
../DiagnosticBox/connectiondialog.h
labjack.h \FORMS += mainwindow.ui
labjack.ui
../DiagnosticBox/adminpanel.ui
../DiagnosticBox/connectiondialog.ui
@The problem is that, when I try to compile the project testDiagnosticBox I receive the error
@...\DiagnosticBox\labjack.h:5: error: LabJackUD.h: No such file or directory@
Meaning that even though is not listed in my SOURCES or HEADERS, qmake is using the file in DiagnosticBox and not the one in testDiagnosticBox, is that the expected behavior ? How can I avoid that ? Should it not be taking the file in testEncoderBox ?
-
The labjack.h file is included in some other files of your project.
I guess it is included without directory name like @#include "labjack.h"@And if that file with "#include "labjack.h" is located in DiagnosticBox then compiler takes labjack.h from the same directory.
The variables SOURCES and HEADERS are for qmake only a compiler reads included files according its own options and that options are defined by INCLUDEPATH.
To avoid it you need to specify different INCLUDEPATH for your test library. -
Thanks a lot andreyc, I was assuming that HEADERS and SOURCES where somehow also used by the compiler.