MC, 2010
Ilustracja do artykułu: Qt - fatal error: ...: No such file or directory - rozwiązanie

Qt - fatal error: ...: No such file or directory - rozwiązanie

Chciałbym dziś przedstawić problem, z którym ostatnio spotkałem się pisząc swoje pierwsze programy z wykorzystaniem bibliotek Qt. Na szczęście udało mi się znaleźć rozwiązanie, a że polski Internet zajmuje stanowisko dość milczące w tej sprawie, to postanowiłem całość opisać na stronie. Tak jak wspomniałem, zacząłem ostatnio pisać programy z wykorzystaniem bibliotek Qt. W dwóch z nich chciałem użyć komponentów QNetworkProxy oraz QWebView. Jednak podczas kompilacji otrzymałem komunikaty o następującej treści:
fatal error: QNetworkProxy: No such file or directory
compilation terminated.
oraz
fatal error: QWebView: No such file or directory
compilation terminated.
Muszę przyznać, że zaskoczyła mnie ta sytuacja, ponieważ pliki nagłówkowe tych bibliotek znajdowały się na swoim miejscu. Jak się okazało, problem leżał w pliku projektu stworzonym za pomocą polecenia qmake. Brakowało w nim wskazania na te biblioteki, dlatego w takiej sytuacji należy ręcznie dopisać odpowiednią linijkę kodu.
Generalnie zasada jest taka, że jak otrzymujemy komunikat o takiej treści, to trzeba się udać do katalogu z plikami nagłówkowymi - w moim przypadku jest to:
/usr/local/Trolltech/Qt-4.7.0/include
Następnie, trzeba znaleźć w którym z katalogów znajdują się wykorzystywane przez nas biblioteki (ich kategoria). Czyli np. dla komponentu QNetworkProxy jest to katalog QtNetwork. Zatem do pliku projektu musimy dopisać następującą linijkę:
QT += network
Dzięki temu kompilator będzie wiedział gdzie szukać plików nagłówkowych.

Analogicznie, dla komponentu QWebView, który znajduje się w katalogu QtWebKit, dopisujemy linijkę:

QT += webkit
Po prostu posługujemy się nazwą katalogu z opuszczeniem członu Qt oraz z tylko małymi literami.

To jeszcze tylko przykład na to co do pisać, gdy chcemy użyć obydwu bibliotek w jednym programie:

QT += network webkit

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: