Gegen Internetzensur
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
  • Flickr Photos

    www.flickr.com
15. Nov
Don

Qt4: qmake für Visual Studio automatisieren

Ich hab mich gerade etwas mit qmake herumgeärgert – obzwar es, zugegebenermaßen, das sympathischste Buildsystem ist, das mir bisher untergekommen ist. Meine speziellen Anforderungen an das Projekt, bei dem ich es benutzen will, sind die folgenden: Ergebnisbinaries in ./bin, Zwischendateien in ./obj, Sources in ./src, Header in ./include. Ferner die Makefiles im Projektordner und etwaige Projektdateien für Visual Studio in ./projects/win32-vs/. Wenn man sich in das Handbuch für QMake einliest ist das alles auch recht flink lösbar, einzig ein kleiner Schönheitsfehler bleibt übrig: Die Debugdatenbank, die die Tools von Visual Studio erstellen, liegen nach einem Aufruf von nmake (oder dem Start des Compilerganges im Studio) nicht dort, wo man sie erwartet, sondern im Projektordner.

Der Trick liegt in einem kleinen Workaround, den man über die Variable QMAKE_CXXFLAGS einbastelt; Diese übergibt Optionen an den Compiler. Durch das Setzen von QMAKE_CXXFLAGS=/Fd$(IntDir)\$(ProjectName).pdb (“Int” von “intermediate”) lässt sich damit recht elegant die Datenbank zu den Zwischendateien verlagern und alles ist, wie es sein soll.

Hier mein endgültiges Hilfsbatch:

Windows Batch [Show Plain Code]:
  1. @REM qmake Projekthelfer
  2.  
  3. @echo off
  4. echo Erzeuge Projekt
  5. qmake -project "INCLUDEPATH += $$PWD\include" "OBJECTS_DIR = $$PWD\obj" "DESTDIR = $$PWD\bin" "MOC_DIR = $$PWD\obj" "QMAKE_CXXFLAGS=/Fd$(IntDir)\$(ProjectName).pdb"
  6.  
  7. echo Erzeuge Makefile
  8. qmake -makefile -win32
  9.  
  10. echo Erzeuge Visual Studio-Projekt
  11. set QMVC_PROJ=.\projects\vc2005\
  12. if not exist %QMVC_PROJ% md %QMVC_PROJ%
  13. qmake -tp vc -o %QMVC_PROJ%
  14. set QMVC_PROJ=

Nach einem Start des Batches kann man sich dann frei aussuchen, ob man per nmake aus der Shell oder doch lieber per IDE feuern möchte. Ideal für Puristen, die ab und zu den Debugger brauchen.
Den entscheidenden Kniff habe ich übrigens von hier. (Meinen Dank damit an dieser Stelle!)

Die Kommentarfunktion ist geschlossen.