Qt parallelbetrieb von minGW/Visual C++ und QtCreator
-
Hallo,
ich hab gerade mal wieder einen ziemlichen Hals auf die vielgerühmte "Plattformunabhängigkeit".
Mein Problem ist folgendes: Mein Projekt braucht unter windows eine Funktionalität einer library, die ich mit MinGW/gcc ums verrecken nicht benutzen kann. Das wurde mir seitens anderer User dieser Library bestätigt. Ich MUSS dann mit Visual Studio kompilieren. Jetzt hab ich die Umgebungsvariablen für die VS-Integration anhand dieses Tutorials http://jan-stuhlmann.de/index.php?i=tutorials#3 gesetzt und es geschafft eine TEMPLATE = vcapp .pro mit qmake -tp vc ein Visual Studio Projekt zu kreieren. Visual C++ 2008 express lädt das auch, kompiliert auch, scheitert dann aber am linken der qtmain.lib. Eine kurze Suche ergibt, dass es in QT/4.4.3/lib nur eine libqtmain.a, aber keine .lib gibt, woraus ich messerscharf folgere, dass minGW zwar sowohl .a als auch .lib statisch reinlinken kann, vc aber nur .lib. Was wiederum heißt, dass ich eine speziell .lib kompilierte qt-version brauche. Das heißt, ich muss mir erstmal mit visual studio eine eigene Qt-distro kompilieren, richtig?
Nun weiter im Text: Wenn ich diese habe, kann ich meine Qt distros parellel installiert haben, so dass ich standardmäßig auf der mingw arbeite, aber visual studio mit der visual studio kompilierten version ?
So und jetzt zum ulitmativen Overkill:
Kann ich, wenn ich eine VC-kompatible Qt-version in einem verzeichnis habe, QT Creator so einrichten, dass er mit visual c++ kompiliert, statt mit minGW? Hieße dass, dass ich gar keine vcapp mehr bräuchte um eine visual-studio-projektdatei zu erzeugen, die ich dann in selbigem importieren müsste, sondern ich direkt aus dem QT-Creator quasi auf der kommandozeilenversion von visual c++ kompilieren kann?Hat so ein Setup schonmal jemand versucht?
Gruß,
Phil
-
Prinzipiell musst du dich an die Regel halten, eine Bibliothek wie zum Beispiel Qt mit dem selben Compiler zu kompilieren, mit dem du später dann auch entwickeln willst.
Wenn du also auf ein und dem selben Rechner (und Betriebssystem) mit zwei verschiedenen Compilern arbeiten willst, brauchst du deine Qt Bibliothek eben auch in zweifacher Ausführung.
Einmal mit dem einen Compiler kompiliert, einmal mit dem anderen.Dem Rest deiner Problemschilderung konnte ich leider nicht ganz folgen, da ich nicht versteh wieso du ein VS Projekt erzeugen willst, dann aber doch nicht mit VS kompilieren willst, dann das Projekt von x nach y portieren etc...
Ich persönlich handhabe das meistens so, dass ich unter Windows mit dem Visual Studio meine Qt Projekte entwickele, einfach aus dem Grund dass das Visual Studio meine favorisierte Entwicklungsumgebung ist.
Will ich mein Projekt nun auf eine andere Plattform portieren, kopiere ich lediglich die ganzen source files, header files, etc. und verwende dann qmake und den nativen Compiler der jeweiligen Platform um zu kompilieren.
(Dabei sei vorausgesetzt dass der gesamte Source Code des Projekts natürlich platformunabhängig geschrieben wurde.)
-
Mit Hilfe einer Batchdatei kannst du realisieren, dass Visual Studio mit einer anderen Qt-Version arbeitet als z.B. MinGW.
Die Batchdatei muss etwa so aussehen:
CALL "%VS80COMNTOOLS%\vsvars32.bat" SET QMAKESPEC=win32-msvc2005 SET QTDIR=C:\Qt\4.5.0 SET PATH=%QTDIR%\bin;%PATH% devenv /useenv
Durch den Schalter "/devenv" verwendet VS die aktuellen Umgebungsvariablen. In diesem Fall die vorher gesetzten aus der Batchdatei.
Dies gilt für VS 2005. Für VS 2008 müssen 2 kleine Änderungen vorgenommen werden:
%VS80COMNTOOLS% => %VS90COMNTOOLS%
win32-msvc2005 => win32-msvc2008So kann man mit mehreren Qt-Versionen gleichzeitig arbeiten.
wichtig ist, dass Qt mit dem Compiler, der VS-Version, die du verwendest, übersetzt wurde.