qmake und dynamisch erzeugt Files

Verschiedenes zu Qt
Antworten
shaka
Beiträge: 27
Registriert: 8. November 2006 10:36
Wohnort: München

qmake und dynamisch erzeugt Files

Beitrag von shaka »

Hallo

Ich habe folgendes Problem: Ich schreibe an einem Projekt, das gsoap verwendet. Dabei wird als erster Build-Schritt vom gsoap-Preprocessor eine Reihe von .h und .cpp Files erzeugt, die ich dann anschließend ganz normal kompiliere und linke. Ich habe mir den Preprocessorschritt über QMAKE_EXTRA_COMPILERS in mein pro-File eingebunden und die erzeugten Files zu HEADERS bzw. SOURCES hinzugefügt.

Das funktoniert alles problemlos und baut auch wunderbar, außer daß der Aufruf von qmake zu einer Reihe von "File not found"-Warnungen führt, da es die Files, die später der Präprozessor erzeugt, zum Zeitpunkt des qmake-Aufrufs natürlich noch nicht gibt.

Meine Frage: Kann ich diese Warnungen irgendwie unterbinden? Wir haben hier eigentlich die Firmenphilosophie des Warnungs-freien Kompilierens...

Danke
Shaka :?:
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Mit qmake ist mir sowas nicht wirklich bekannt. Und wenn es was größeres wird würde ich eh nicht qmake benutzen sondern evtl. cmake.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
catani
Beiträge: 1
Registriert: 30. Mai 2008 09:23

Beitrag von catani »

Wenn Du beispielsweise mit

Code: Alles auswählen

QMAKE_EXTRA_COMPILERS += MyTargetCPP
ein eigenes Target definierst. Kannst Du mit

Code: Alles auswählen

MyTargetCPP.output = $$GeneratedCPPFiles
MyTargetCPP.input = InputFile
MyTargetCPP.commands = $$CPPGENERATOR -iBlaBal -o$$GeneratedCPPFiles
MyTargetCPP.depends = $$WeiteresTarget
MyTargetCPP.CONFIG = target_predeps no_link
MyTargetCPP.variable_out = SOURCES
ein Target definieren bei dem die dynamisch generierte CPP Dateien den Sourcen des "Haupttargets" hinzugefügt werden. Die Benutzer Variable GeneratedCPPFiles muß die Liste der erzeugten CPP Namen enthalten. Die Variable CPPGENERATOR enthält denn Filenamen des CPP Generators
target_predeps sorgt dafür, dass die CPP Dateien erzeugt werden bevor das Haupttarget bearbeitet wird.

Der Trick liegt in der letzen Zeile, die dafür sorgt, dass die erzeugten Outputdateien den SOURCES hinzugefügt wird. Die Warning wird auf diese Weise ausbleiben :)

Grüsse aus Norddeuschtland
catani
Antworten