Qmake nie może znaleźć plików pomimo podawania dobrej ścieżki

0

Hejka,
stworzyłem w swoim projekcie nowy podprojekt(subproject) do testowania swojej apki. W nowym podprojekcie chciałbym mieć dostęp do plików nagłówkowych w drugim podprojekcie, który jest apką. Napisałem Qmake'a, który powinien znaleźć pliki, ale coś mu się nie udaje i sypie mi dość dziwnymi i mało mówiącymi błędami:
Cannot open include file: 'Jakiś header czy to mój czy z Qt5': No such file or directory, a co ciekawe jak z pliku test.pro usunę pliki z HEADERS i SOURCES to się normalnie kompiluje.
hierarchia projektu:

project
     |---- src
     |        |---- src.pro
     |        |---- wszystkie klasy i implementacja
     |---- test
     |        |---- test.pro
     |        |---- test.pri

no i test.pro w końcu powinien mieć dostęp do src/wszystko, ale nie ma:

include(gtest_dependency.pri)

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG += thread
CONFIG -= qt

HEADERS += \
        tst_ischaracterequaltocode.h \
        ../src/MorseCodeConverter.h \
        ../src/PushButtonHover.h \
        ../src/Keyboard.h

SOURCES += \
        source.cpp \
        ../src/MorseCodeConverter.cpp \
        ../src/PushButtonHover.cpp \
        ../src/Keyboard.cpp

czy ja aby na pewno podaję dobrą ścieżkę do tych plików?
pozdro :P

1

Podajesz ścieżkę relatywną dla pliku .pro, być może relatywne ścieżki dla procesu qmake są inne. Spróbuj użyć PWD

SOURCES += \
        $$PWD/src/MorseCodeConverter.cpp \
2

Problem raczej braku definicji include dierctory, czli gdzie podczas kompilacji szukać plików nagłówkowych.
dodaj:

INCLUDEPATH += <jakaś sciezka>

dla projektu, który ma ten problem.
<jakaś sciezka> ustal na podstawie tego jakiego pliku nie może znaleźć.

Napisałeś jeszcze: Cannot open include file: 'Jakiś header .... z Qt5': a przecież twój plik pro usuwa z konfiguracji Qt: CONFIG -= qt! Jakiego pliku Qt nie może znaleźć?

0

@several: dzięki, ale niestety też nie działa. Wysypuje mi teraz takie errory:
warning: Failure to find: ścieżka_do_projektu/test/src/MorseCodeConverter.cpp
dla każdej zaincludowanej klasy dostaję taki error i to zdublowany, a dodatkowo pojawiają mi się warningi warning: Using googletest src dir specified at Qt Creator wizard, ale to chyba nie ma tu znaczenia.

0

@MarekR22: spróbuję z includepath za chwilkę, a co do cannot open include file, to tak:
error: C1083: Cannot open include file: 'PushButtonHover.h': No such file or directory przy czym error ma źródło w pliku implementacyjnym klasy: PushButtonHover.cpp

Do tego takie same erorry tyle, że dla QObject i QString tylko, że tu już w headerach moich klas. Jeśli zakomentuję #include swojej klasy w pliku nagłówkowym w testach i usunę ścieżki z HEADERS i SOURCES, to nagle moje klasy wszystko znajdują T_T

1

Czy ty na pweno chcesz mieć aplikację konsolową?
Wpisy w w pliku masz takie jakby to miała być aplikacja konsolowa, a PushButtonHover sugeruje coś innego.

0

W każdym razie dodałem include path INCLUDEPATH += \ ../src i nadal nie działa :( wyskakuje mi error w dwóch moich klasach:
error: C1083: Cannot open include file: 'QPushButton': No such file or directory
Jak próbuję używać $$PWD, to nie znajduje mi plików pomimo podawania do nich dobrej ścieżki eh...
aktualna zawartość test.pro:

TARGET = tests
TEMPLATE = app
CONFIG += c++1z
CONFIG += thread
CONFIG += qt

HEADERS += \
        tst_ischaracterequaltocode.h \
        ../src/MorseCodeConverter.h \
        ../src/PushButtonHover.h \
        ../src/Keyboard.h

SOURCES += \
        source.cpp \
        ../src/MorseCodeConverter.cpp \
        ../src/PushButtonHover.cpp \
        ../src/Keyboard.cpp

INCLUDEPATH += \
             ../src
1

@Cyberah: W tym moim przykładzie zrobiłem błąd, powinno być $$PWD/.../src/MorseCodeConverter.cpp \

3
Cyberah napisał(a):

W każdym razie dodałem include path INCLUDEPATH += \ ../src i nadal nie działa :( wyskakuje mi error w dwóch moich klasach:
error: C1083: Cannot open include file: 'QPushButton': No such file or directory
Jak próbuję używać $$PWD, to nie znajduje mi plików pomimo podawania do nich dobrej ścieżki eh...
aktualna zawartość test.pro:

TARGET = tests
TEMPLATE = app
CONFIG += c++1z
CONFIG += thread
CONFIG += qt

HEADERS += \
        tst_ischaracterequaltocode.h \
        ../src/MorseCodeConverter.h \
        ../src/PushButtonHover.h \
        ../src/Keyboard.h

SOURCES += \
        source.cpp \
        ../src/MorseCodeConverter.cpp \
        ../src/PushButtonHover.cpp \
        ../src/Keyboard.cpp

INCLUDEPATH += \
             ../src

Trzeba było zacząć od nowego projektu "Qt widget application" (pewnie przekręciłem nazwę), wtedy Qt creator wygenerowałby prawidłowy szkielet, następnie skopiuj ten wzorzec do swojego projektu.
Na pewno brakuje tego:

QT += widgets

i jeszcze może paru innych rzeczy.

0

a mam podobny problem bo zachciało mi się ostatnio w moim małym pobocznym projekcie qmake i qtest(zamiast jak zawsze cmake). Jak rozwiąże dam znać(może dziś wieczorem).

0

Ok, w końcu działa. Jeeeest, całe dwa dni na to zmarnowałem, jeez... W każdym razie dziękuję każdemu za pomoc, rozwiązanie od @MarekR22 okazało się trafne - brakowało QT += widgets. Ja pierdziele, to tylko jedna linijka haha.

1 użytkowników online, w tym zalogowanych: 0, gości: 1