Seite 1 von 1

qmake und CFLAGS

Verfasst: 11. Februar 2008 15:04
von oarlock99
Hallo zusammen,

ich möchte qmake (Qt 4.3.2) gerne folgende CFLAGS übergeben:
CFLAGS=-L. -lftd2xx c:/projects_qt/QUsbCan

Folgendes habe ich schon probiert:
1 Die .pro Datei ändern
Folgende Parameter
QMAKE_CFLAGS_RELEASE += L. -lftd2xx c:/projects_qt/QUsbCan
QMAKE_CFLAGS_DEBUG += L. -lftd2xx c:/projects_qt/QUsbCan
in der .pro Datei eintragen. Dann in der Eingabeaufforderung qmake eingeben damit das Makefile erzeugt wird. Das Makefile habe ich dann kontrolliert ob der Eintrag auch auftaucht. Unter Makefile.Debug und Makefile.Release ist dann der zugehörige Eintrag unter den CFLAGS zu finden. Wenn ich aber das Projet mit make versuche zu kompilieren dann erhalte ich weiterhin eine Fehlermeldung vom Linker (siehe unten).

2. Die qmake.conf ändern:
Jede Änderung von QMAKE_CFLAGS_DEBUG und QMAKE_CFLAGS_RELEASE in der qmake.confi unter C:\Qt\4.3.2\mkspecs\win32-g++ zeigt keinerlei Auswirkung auf das Makefile das erstellt wird. Sollte es aber, oder?

3. Makefile
Ich habe auch schon das erstellte Makefile per Hand editiert (CFLAGS hinzugefügt) und anschliessend mit make versucht das ganze zu kompilieren. Aber auch hier kein Erfolg!


Bei allen 3 Varianten erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

mingw32-make[1]: Entering directory `C:/projects_qt/QUsbCan'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -mthreads -Wl -Wl,-subsystem,windows -o "debug/QUsbCan.exe" debug/main.o debu
g/QUsbCan.o  -L'c:/Qt/4.3.2/lib' -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
debug/QUsbCan.o: In function `ZN7QUsbCan4openEi':
C:/projects_qt/QUsbCan/QUsbCan.cpp:58: undefined reference to `_imp__FT_Open@8'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug/QUsbCan.exe] Error 1
mingw32-make[1]: Leaving directory `C:/projects_qt/QUsbCan'
mingw32-make: *** [debug] Error 2
Dies ist exakt die Fehlermeldung die ich auch bei einem anderen Projekt ohne Qt (also nur Eingabeaufforderung) erhalte wenn ich dem Compiler die notwendigen Librarys nicht über die CFLAGS mitteile.
Ich gehe also stark davon aus, dass es unter Qt hier scheitert.

Kann mir jemand kurz sagen, wo ich Hand anlegen muss, damit qmake mir die benötigte Library einfügt, linkt oder wie auch immer?

Verfasst: 11. Februar 2008 15:09
von Christian81
Ich weiss zwar nicht was ne lib bei den CFLAGS zu suchen hat (wohl eher LFLAGS), aber egal :)

RTM: http://doc.trolltech.com/4.3/qmake-vari ... .html#libs

Verfasst: 11. Februar 2008 15:49
von oarlock99
Das weis ich auch nicht, aber ich habe mich zum einbinden der dll an ein Makefile gehalten, wo das so gemacht wird.

Hier das Makefile, an das ich mich anlehne:

Code: Alles auswählen

:q
#TOPDIR  := $(shell cd ../..; pwd)

CC=gcc
CFLAGS=-L. -lftd2xx -ld2xx_table -Wl,-rpath /usr/local/lib

APP = test_canusb

all: $(APP)

$(APP): main.c	
	$(CC) -o $(APP) $(CFLAGS) main.c	

clean:
	rm -f *.o ; rm $(APP)

Und bei einem anderen Project, basierend auf der Eingabeaufforderung habe ich das auch so gemacht um den Treiber einzubinden. Hat prima funktioniert!

Wird das bei Qt anders gemacht, oder wie?

Gruß
Roland

Verfasst: 11. Februar 2008 15:59
von oarlock99
Änderungen in meiner qmake.conf zeigen jetzt wirkung!

Hab vergessen die QMACSPEC zu setzen :?

Aber mein Probelm besteht weiterhin!

Gruß
Roland

Verfasst: 11. Februar 2008 16:06
von oarlock99
Hurra Funktioniert!

Danke Christian81!

Hab folgendes hinzugefügt in qmake.conf

QMAKE_LIBS += -Lc:/projects_qt/QUsbCan/ -lftd2xx


Gruß
Roland