qmake und eigener preprocessor

Alles zu Entwicklungsumgebungen und Editoren für Qt
Antworten
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

qmake und eigener preprocessor

Beitrag von dazedly »

Hi ich hab mal wieder eine Frage,

ich stelle gerade unser Projekt von CMake auf qmake um, bzw hab ich das vor. Jetzt ist ein Teil der Sache eine Art selbst geschriebenes moc, welches vor zwei Targets ausgeführt werden muss. Mit CMake hatte ich das so geregelt:

add_custom_target(targetName COMMAND ${CMAKE_BINARY_DIR}/prep/prep.exe ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/ COMMENT "executing targetName" DEPENDS prep)


Hier habe eine Abhängigkeit zu einem anderen CMake Projekt geschaffen, ich habe die Variablen für das Outputverzeichnis und konnte das Kommando definieren. Wie würde hierzu jetzt das Gegenstück in Qt aussehen?

Edit:
Und wie kann ich wie bei Qt selbst sagen, dass er alle Binaries in ein Verzeichnis schieben soll?
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: qmake und eigener preprocessor

Beitrag von brax »

Deinen eigenen Preprozessor kannst Du per QMAKE_EXTRA_COMPILERS einbinden.

Hier ein Auszug aus einer pro Datei, bei der ich ml.exe für meinen Assembler Code einbinde, evtl. hilft das ja schon:

Code: Alles auswählen

mycpu = $$(CPU)
	mlCmd=ml.exe
	!contains(mycpu, AMD64) {
	  mlCmd=ml.exe
	} else {
	  mlCmd=ml64.exe
	}
	ml.output = obj/obj.$$ARCH/${QMAKE_FILE_BASE}.obj
	CONFIG(debug) {
		ml.commands = $$mlCmd /safeseh /Zi "/Flobj\obj.$$ARCH\\${QMAKE_FILE_BASE}.lst" "/Foobj\obj.$$ARCH\\${QMAKE_FILE_BASE}.obj" /c "${QMAKE_FILE_NAME}"
	} 
	else {
		ml.commands = $$mlCmd /safeseh "/Flobj\obj.$$ARCH\\${QMAKE_FILE_BASE}.lst" "/Foobj\obj.$$ARCH\\${QMAKE_FILE_BASE}.obj" /c "${QMAKE_FILE_NAME}"
    }
    ml.input    =  ASMS


   QMAKE_EXTRA_COMPILERS += ml    
   
	HEADERS *= \
		code.h
	
	!contains(mycpu, AMD64) {
	  ASMS *= \
		code.asm
	} else {
	  ASMS *= \
		code64.asm
	}
Das Zielverzeichnis setzt Du über die DESTDIR Variable, die Objekt Dateien kommen in das Verzeichnis, das per OBJECTS_DIR gesetzt ist. Wenn Du es ganz aufgeräumt haben willst, sind auch MOC_DIR und RCC_DIR interessant.
chrislo1976
Beiträge: 105
Registriert: 24. Februar 2008 09:45

Re: qmake und eigener preprocessor

Beitrag von chrislo1976 »

Hallo!

Was mich interessieren würde:
Warum der Wechsel von CMake zu QMake?

Gruß,
Christian
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Re: qmake und eigener preprocessor

Beitrag von dazedly »

@brax, danke ich werde es mir mal ansehen.
chrislo1976 hat geschrieben: Was mich interessieren würde:
Warum der Wechsel von CMake zu QMake?
Wir steigen um, da mit qmake einiges unkomplizierter läuft und weil es direkt mit Qt mitgeliefert wird. Auch lässt die Qualität von Kdevelop zu wünschen übrig, auch wenn er viele Features hat, welche ich definitiv beim QtCreator vermisse. Es ist einfach komfortabel die Qt Tools zu benutzen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: qmake und eigener preprocessor

Beitrag von Christian81 »

Na ob da qmake das Mittel der Wahl ist - weis ja net, selbst bei Qt5 haben sie überlegt das blöde qmake durch cmake zu ersetzen ... aber jedem das seine :)
Und qtcreator kann natürlich auch mit CMake arbeiten - mache ich ständig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Re: qmake und eigener preprocessor

Beitrag von dazedly »

Christian81 hat geschrieben:Na ob da qmake das Mittel der Wahl ist - weis ja net, selbst bei Qt5 haben sie überlegt das blöde qmake durch cmake zu ersetzen ... aber jedem das seine :)
Und qtcreator kann natürlich auch mit CMake arbeiten - mache ich ständig.

Verstehe ich nicht ganz... Es ist weniger zu konfigurieren für Qt. Header und Bodies werden sauber hinzugefügt und wieder entfernt nach dem löschen. Keine Zusatzfunktionen müssen aufgerufen werden.
Von der Handhabung kam mir qmake wesentlich einfacher vor.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: qmake und eigener preprocessor

Beitrag von RHBaum »

Von der Handhabung kam mir qmake wesentlich einfacher vor.
Dann verwendest du neben der Qt aber nicht viel "spezielles Zeugs" :-)
Der vorteil von Cmake ist seine Flexibilitaet. Die bekommst aber nicht kostenlos :-) Bissi mehr einarbeitung als wie in qmake ist schon notwendig.
Bei qmake kommst recht fix an grenzen, wenn mehrere builds mit unterschiedlichen compilern und runtimes bauen willst, wenn build-abhaengig zwischen statischem linken und dynamischen linken einer lib entscheiden willst,
wenn tools ausserhalb der qt toolkette brauchst (assembler einbinden, swig etc) . Also zumindest ich kam da mit qmake nich klar ^^

Aber wenn Deine Anforderungen nicht weiter als wie qt und paar zusaetzliche Libs / dlls drüber hinausgehen, würd ich aber auch bei qmake bleiben :-)
weis ja net, selbst bei Qt5 haben sie überlegt das blöde qmake durch cmake zu ersetzen
aber mal ehrlich, hasst qt5 mal selber gebaut ?
perl (nicht 64bit), python( aber nicht version 3 und nicht 64bit), nen 3tes buildtool (jom, ok geht auch ohne aber laut docu brauch mans) ....
Glaub was die mittlerweile intern als besseren buildgenerator preferieren, wär mir wurscht, die sollten eher hinbekommen, das man ihr framework ohne diese abartige Installationsorgie von tools im vorhinein hinbekommt ^^

Oder vielleicht brauch man grad deshalb die zig scriptsprachen, weil qmake das selber ned auf die reihe bekommt :-)

Ciao ...
Antworten