[gelöst]Qt 2.3 ich verzweifle noch

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Mr. Anderson
Beiträge: 16
Registriert: 19.11.2005 12:17:07

[gelöst]Qt 2.3 ich verzweifle noch

Beitrag von Mr. Anderson » 19.11.2005 12:36:19

Hallo,

ich programmiere derzeit in C++ mit Qt 2.3 aus dem oldstable tree. Diese alte Qt-Version muss ich nehmen, da es um Übungsaufgaben für eine Vorlesung geht, wo Version 2.3 als gemeinsamer Nenner vorgeschrieben ist.
Nun habe ich gestern an einem Programm geschrieben. Das hat auch alles funktioniert. Ich habe lauffähigen Code. Gestern abend hab ich dann ein Update von GCC 3.3 auf GCC 3.4 ausgeführt. Danach hat das Kompilieren nicht mehr funktioniert. Qt wurde nicht mehr gefunden.
Also hab ich GCC 3.4 wieder runtergeschmissen und GCC 3.3 wieder installiert. Allerdings versuchte GCC nicht mehr an Qt2.3 zu binden, sondern an Qt3. Also habe ich Qt2.3 neu installiert. Schließlich bin ich nun so weit, dass Qt2.3 installiert ist und verwendet wird, aber ich bekomme unschöne Compilerfehler. Ich bin absolut sicher, dass der Code in Ordnung ist Ich habe ihn auch nochmal auf nem anderen System getestet.

Der Fehler sieht so aus:
make
g++ -c -pipe -Wall -W -g -I/usr/include/qt -o mp5.o mp5.cpp
mp5.cpp: In Funktion »int main(int, char**)«:
mp5.cpp:75: Warnung: unused variable `QLabel*ql1'
mp5.cpp:81: Warnung: unused variable `QCheckBox*cb1'
g++ -c -pipe -Wall -W -g -I/usr/include/qt -o pwq.o pwq.cpp
/usr/bin/moc pwq.h -o moc_pwq.cpp
g++ -c -pipe -Wall -W -g -I/usr/include/qt -o moc_pwq.o moc_pwq.cpp
g++ -o mp5 mp5.o pwq.o moc_pwq.o -L/usr/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
mp5.o(.text+0x29): In function `main':
/usr/include/qt/qstring.h:651: undefined reference to `QApplication::QApplication[in-charge](int&, char**)'
mp5.o(.text+0x68):/usr/include/qt/qstring.h:654: undefined reference to `QMainWindow::QMainWindow[in-charge](QWidget*, char const*, unsigned)'
Danach folgen noch mehrere Seiten Fehler. Ich weiß nicht, woran es liegt. Bin kein Linux-Geek.
Die Fehlermeldung ist typisch dafür, wenn man vergisst den MOC anzuwenden, aber QString ist eine Datei von Qt. Daran hab ich nichts geschraubt.
Ich habe sogar ein komplett neues System heute morgen installiert, aber der Fehler ist der gleiche.
Woran könnte es liegen? Kann mir jemand helfen?
Zuletzt geändert von Mr. Anderson am 20.11.2005 01:06:58, insgesamt 1-mal geändert.

Mr. Anderson
Beiträge: 16
Registriert: 19.11.2005 12:17:07

Beitrag von Mr. Anderson » 19.11.2005 23:59:01

So, jetzt habe ich immerhin herausgefunden, was nicht stimmt. QTDIR wird nicht gesetzt. (Warum? Hatte bei früheren Installationen keine Probleme damit)
setze ich QTDIR global manuell, so wird es von tmake ignoriert. Ich muss das Makefile schon von Hand editieren, damit es funktioniert.

Tja, jetzt kommt meine Unwissenheit zu Debian und auch allgemein GNU/Linux. Ich weiß, man muss QTDIR nicht global setzen. Aber wo und wie sonst? Die Dokumentation dazu ist recht spärlich, wenn man nicht weiß, wonach man eigentlich sucht...

Woher holt sich tmake seine Informationen? Was muss ich ändern, damit alles wieder automatisch gefunden wird?

edit: ok, nicht QTDIR ist falsch gesetzt, sondern der Pfad zu den libs.
####### Compiler, tools and options

QTDIR = /usr
CC = gcc
CXX = g++
CFLAGS = -pipe -Wall -W -g
CXXFLAGS= -pipe -Wall -W -g
INCPATH = -I$(QTDIR)/include/qt
LINK = g++
LFLAGS =
LIBS = $(SUBLIBS) -L$(QTDIR)/local/qt/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
MOC = $(QTDIR)/bin/moc
UIC = $(QTDIR)/bin/uic

TAR = tar -cf
GZIP = gzip -9f
ich muss erst das, was ich rot eingefärbt habe, im Makefile einfügen. Wovon hängt das ab? Was hab ich falsch gemacht?


edit2: Ich bin schon ein Held. Ich dachte, da würde sonstwas für ein Konfigurationsmechanismus dahinterstecken. Dabei reicht ein Blick in /etc...
Also es funktioniert jetzt wie gewünscht.

Aber trotz allem: warum hat apt-get das nicht korrekt eingerichtet? Ich versteh's nicht. Hat doch früher auch funktioniert.

Grmpf. Da hab ich mir diesmal echt umsonst das Wochenende vermiest...

Antworten