[gelöst] vcproj benutzerdefiniert erstellen mittels qmake ?

Verschiedenes zu Qt
Antworten
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

[gelöst] vcproj benutzerdefiniert erstellen mittels qmake ?

Beitrag von René »

Hallo,

ich nutze die nicht kommerzielle Version von Qt, also ohne Visual Studio Integration. Dennoch verwende ich Visual Studio als IDE.

Mittels qmake -tp vc <name>.pro kann ich problemlos vcproj Dateien erstellen. Ohne die (kommerzielle) Integration in Visual Studio führe ich das qmake Kommando immer dann aus, wenn eine Q_OBJECT Klasse oder eine Resource-Datei oder eine *.ui Datei dem Projekt hinzugefügt wurde.

Dies ist insofern lästig, da qmake die Visual Studio Projekteinstellungen, die man noch manuell vorgenommen hat überschreibt. Dazu gehören beispielsweise Optimierungen für den release-Mode und Abhängigkeiten zu anderen Libraries (-I, -L, -l) sowohl für den debug- als auch release-Mode. Nach jedem qmake muss ich das wieder neu einstellen.

Das kann es nicht sein! Ich habe im qmake Manual etwas gestöbert, bin aber nicht wirklich fündig geworden. Kann da jemand weiterhelfen?
Zuletzt geändert von René am 12. Februar 2009 18:25, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Für die Libs gibts ne .pro-Datei Option, für den Rest nicht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

Beitrag von René »

Damit gebe ich mich nicht zufrieden. Also habe ich gebastelt und folgende Lösung gefunden:
  1. Ich habe eine Batch-Datei in meinem Projektverzeichnis "Test" mit folgendem Inhalt erzeugt:

    Code: Alles auswählen

    @echo off
    
    REM ----------------------------
    REM CREATE PROJECT FILES
    REM ----------------------------
    
    SET QMAKEFEATURES=%QTDIR%\mkspecs\features;.
    qmake -project "CONFIG += myfeatures"
    qmake -tp vc Test.pro
    Das erste qmake-Kommando erzeugt eine Test.pro Datei mit der zusätzlichen Zeile

    Code: Alles auswählen

    CONFIG += myfeatures
    Man kann also qmake diverse Assignments als Parameter mitgeben. Diese zusätzliche Zeile in der Test.pro Datei sorgt dafür, das qmake nach einer Datei namens myfeatures.prf sucht. Unter Windows sucht qmake dazu mit Hilfer der QMAKEFEATURES Variable in bestimmten Verzeichnissen. Nähreres dazu findet sich im QtAssistant. Meine myfeatures.prf Datei liegt in meinem Projektverzeichnis, also

    Code: Alles auswählen

    SET QMAKEFEATURES=.
    Dann findet qmake aber Qt's eigene *.prf Files nicht mehr, daher habe ich die Zeile so abgeändert, dass QMAKEFEATURES eine Semikolon-separierte Liste von Verzeichnissen enthält mit Qt's Standard-features-Verzeichnis und meinem Projketverzeichnis:

    Code: Alles auswählen

    SET QMAKEFEATURES=%QTDIR%\mkspecs\features;.
  2. Jetzt habe ich eine myfeatures.prf Datei in meinem Projektverzeichnis angelegt mit folgendem Inhalt:

    Code: Alles auswählen

    QT += xmlpatterns
    INCLUDEPATH += c:\programme\qwt-5.1_436\include
    LIBS += -Lc:\programme\qwt-5.1_436\lib
    
    debug {
      LIBS += -lqwtd5 -lqtmaind
    }
    
    release {
      LIBS += -lqwt5 -lqtmain
    }
    
    QMAKE_CXXFLAGS_RELEASE += /Ob2 /Oi /Ot /Oy /arch:SSE2
    Innerhalb der prf Datei stehen einem die mächtigen Werkzeuge von qmake zur Verfügung, ein Blick in die qmake-Dokumentation lohnt sich. Mit INCLUDEPATH gebe ich ein weiteres INCLUDE Verzeichnis an, welches sich dann unter den VisualStudio-Projekteinstellungen sowohl im Release als auch im Debug Modus wiederfinden lässt. Gleiches gilt für das lib-Verzeichnis. Die Library selbst unterscheidet sich im Dateinamen, je nach Debug oder Release Mode, daher die Unterscheidung in meinem prf File. Zuletzt stelle ich noch einige Compiler-Optimierungen für den Release Mode ein.

    Durch dieses prf File wird eine Visual Studio Projektdatei von qmake erzeugt, die meine persönlichen Einstellungen bereits exakt enthält, so dass ein Doppelklick auf die Batch Datei vollkommen ausreichend ist. Diese Batch Datei lässt sich zudem noch als External Tool auf die Werkzeugleiste von Visual Studio legen, damit ist es nur noch ein einziger Klick. Das Ganze lässt sich natürlich beliebig erweitern.

    Das einzige Problem, dass ich dabei feststellen konnte, ist das Fehlen der qtmain Library in den Projekteinstellungen. QtCore, QtGui und qtmain sollten eigentlich standardmäßig eingetragen sein, aber qtmain fehlt seit Verwenden der prf Datei. Daher habe ich, wie oben zu sehen, qtmain noch in mein prf File mit aufgenommen.
Antworten