Seite 1 von 2

Qt "portabel" übersetzen?

Verfasst: 17. September 2007 23:00
von Winni
Hi,

ich habe mal eine kurze, grundsätzliche Frage:
Bisher habe ich Qt immer so übersetzt, dass es irgendwo auf C:\qt_version gelandet ist. Hat mir persönlich auch gereicht .
Nun soll ich Qt aber nach Möglichkeit so übersetzen, dass es portabel ist, sprich, dass man den gesamten Qt-Ordner auch auf ein anderes Laufwerk verschieben kann. Wenn ich das auf meine bisherige Variante mache, dann kann man ja die Quellcode-Dateien / Bibliotheken etc. nutzen, die Sachen wie die Visual Studio-Projekdateien enthalten aber ja dann den absoluten Pfad zu c:\qt_version und können damit nicht mehr genutzt werden. Auch die Hilfe (assistant) will nach einem Verschieben des Ordners nicht mehr funktionieren.

Kann man das beim Übersetzen von Qt irgendwie beeinflussen, dass die Pfade nicht absolut eingetragen werden?

Vielen Dank vorab für evtl. Antworten.

Gruß

Winni

Verfasst: 17. September 2007 23:45
von CaptnChaos
hm
du könntest theoretisch alle absoluten pfadangaben mit

Code: Alles auswählen

QDir::currentPath();
erstetzen. Dadurch wäre das Problem mit den Pfaden gelöst. Und für die Umgebung: Wenn man VS auf dem Rechner hat, wofür portablität? für mingw
würde sich das lohnen.
Sonst müsstest du einfach die VS aus einer Konsole mit veränderten Umgebungsvariablen starten und das müsste dan funktionieren. denke ich...

Re: Qt "portabel" übersetzen?

Verfasst: 18. September 2007 19:05
von gerome69
Winni hat geschrieben:Hi,

ich habe mal eine kurze, grundsätzliche Frage:
Bisher habe ich Qt immer so übersetzt, dass es irgendwo auf C:\qt_version gelandet ist. Hat mir persönlich auch gereicht .
Nun soll ich Qt aber nach Möglichkeit so übersetzen, dass es portabel ist, sprich, dass man den gesamten Qt-Ordner auch auf ein anderes Laufwerk verschieben kann. Wenn ich das auf meine bisherige Variante mache, dann kann man ja die Quellcode-Dateien / Bibliotheken etc. nutzen, die Sachen wie die Visual Studio-Projekdateien enthalten aber ja dann den absoluten Pfad zu c:\qt_version Winni
Ich denke, das wird nicht wirklich funktionieren, weil zB in qmake der Installationspfad fest einkompiliert ist, zumindest bei meinem selbst kompilierten Qt ist das so.

Außerdem, was heißt portabel. Der Aufruf "qmake" in deinem Projektordner führt doch eh dazu, daß die richtigen Makefiles erstellt werden und das ganz wieder kompilierbar ist. evtl. noch die QMAKE_SPEC anpassen.

Gruß, Gérôme

Verfasst: 18. September 2007 19:14
von Winni
Es geht wohl darum (so wurde mir gesagt), dass jeder Benutzer sich den Qt-Ordner dahin schieben kann, wo er will und dennoch bspw. alle Beispiele direkt kompilieren kann, ohne das er vorher irgendetwas anderes machen muß, als die jeweilige .sln-Datei zu öffnen. :D

Das scheitert prinzipiell wohl daran, dass der Installationspfad fest vorgegeben ist, sobald "configure" ausgeführt wird.

Verfasst: 18. September 2007 19:50
von Christian81
Stichwort: qt.conf

Verfasst: 18. September 2007 22:48
von Winni
Hey, danke, das ist ja schonmal was.
Habe ich das richtig verstanden, dass man damit die Pfadangaben dann nach der Übersetzung "umbiegen" kann, dass also statt der festen Installationspfade die Pfade aus der Datei qt.conf benutzt werden?

Verfasst: 19. September 2007 15:57
von RHBaum
also bei meiner QT integration in VS gibts menupunkte womit ich die "QTversion" umstellen kann ....

Dabei liest er umgebungsvariablen aus, und bietet daraus otionen an, dann setzt er wieder ne umgebungsvariable um ....

wenn ich irgendwas von der QT verweisse dann prinzipiell ueber $(QTDIR)
fuer die integration gibts dann halt noch QT4DIR und QT3DIR

also wenn man die anpasst, findet der eigentlich auch alles ....

Ciao ....

Verfasst: 19. September 2007 16:00
von Christian81
RHBaum: mach dich bitte schlau bevor Du was postest. qmake/Qt4 und alles andere richtet sich auf keinen Fall mehr nach QTDIR sondern verwendet nur noch hartcodierte Pfade und die qt.conf

@Winni: Ja, das ist der Sinn.

Verfasst: 20. September 2007 10:08
von RHBaum
Also ne qt.conf hab ich auch

Ich hab QT 4.2.1 kommerziell + VS 2005 ohne Service pack.

Die Pfade sind definitiv per $(QTDIR) eingebunden.
und beim builden wird moccer und der ressourcen kompiler aufgerufen, aber ned das qmake. builden tu ich "klassisch" mit nmake

So siehts zumindest hier aus ....
Iss das nu von der QT Version oder von der Lizens abhaengig ?

Wenns bei neueren versionen ned mehr so ist dann ups, tschuldigung.

Ciao ...

Verfasst: 20. September 2007 10:58
von Christian81
Verschieb mal dein Qt-Verzeichnis und mach dann ein 'qmake -v' und Du wirst sehen dass es noch die alten Pfade ausgibt:

Code: Alles auswählen

C:\tmp>qt-4.2.1\bin\qmake -v
QMake version 2.01a
Using Qt version 4.2.1 in C:\tmp\qt-4.2.1\lib

C:\tmp>ren qt-4.2.1 qt-4.2.1-2

C:\tmp>qt-4.2.1-2\bin\qmake -v
QMake version 2.01a
Using Qt version 4.2.1 in C:\tmp\qt-4.2.1\lib
D.h. QTDIR wird zwar verwendet, aber nur um die qt-tools zu finden. Intern zeigen aber die Pfade noch auf die Install-Dir

Verfasst: 20. September 2007 14:38
von RHBaum
ich bezweifle nicht, das qmake die qt.conf verwendet.
Nur wir verwenden qmake nich. Bei unseren Projekten / unser Configuration werden auch keine .pro files verwendet, sondern die muss ich seperat in nen .vcproj umwandeln, dann kann ich sie auch mit nmake und dem VS Studio uebersetzen. und in dem vcproj stehen die Verweise auf die QT Dirs eben mit $(QTDIR) drinne.

Auch wenn ich mit dem QT Assistenten der sich in VC 2005 einklinkt, nen neues QT project erstelle, wird keine .pro datei erzeugt.

Sondern alles auf .vcproj basis. und an qt tools wird nur der moccer und der ressourcencompiler verwendet, die werden als prebuild-stepp bei jeder QT klasse / qt ressource definiert.
Ansonsten laeuft reines Microsoft VC, also nmake und so ....

Bei der opensource version unter windows kann das durchaus total anders sein ....

Ciao ...

Verfasst: 20. September 2007 15:14
von Christian81
Du scheinst nicht zu begreifen was der Poster überhaupt will...
Nun soll ich Qt aber nach Möglichkeit so übersetzen, dass es portabel ist, sprich, dass man den gesamten Qt-Ordner auch auf ein anderes Laufwerk verschieben kann.
Und das geht nunmal nur so wie ich es gesagt habe und hat nichts mit der Erzeugung von .vcproj - Dateien zu tun!

Verfasst: 20. September 2007 15:39
von RHBaum
klar hats was damit zu tun :-)

weil bei mir (also bei QT enterprice 4.2.1 + QT migrationskit) kannst du nach der installation die qt.conf aendern wie lustig bist .... er (der VC compiler) wird es ignorieren.

Ich muss (darf) in der VS Studio Oberflaeche das verzeichniss zur QT angeben oder die wie bisher ueber die QTDir geschichte setzen ...

Das wollt ich nur damit ausdruecken ....
Also isses wahrscheinlich abhaengig welche version er hat und welche lizenz (Opensource / commerziell) bzw ob und was fuer qt tools er nutzt.

Du gehst einfach davon aus, das jeder qmake verwendet, und das ist definitiv nicht der fall.

Ciao ...

Verfasst: 20. September 2007 15:51
von Christian81
Es hat nichts mit qmake zu tun und QTDIR ist auch total egal. Deine App setzt wohl die Pfade in den Qt-Libs direkt. Kannst die Libs ja mal durchsuchen...

Verfasst: 20. September 2007 15:59
von Winni
Ich nutze die kommerzielle Version 4.3.1, das zur Info :wink:

Mein Problem ist einfach Folgendes:
Wenn ich QT gemäß der beiliegenden Anleitung übersetze (kurz: entpacken, configure (mit win32_msvc2005), nmake, fertig), dann werden in sämtlichen VS-Projektdateien der Beispiele sämtliche Pfade zu rcc, uic etc. fest eingetragen, was dazu führt, dass jeder Programmierer das QT-Verzeichnis genau an dem Ort liegen haben muß, wo ich es übersetzt habe, oder er muß halt die Projektdateien entsprechend ändern, sollte er sich mal eben schnell eins der Beispiele übersetzen wollen :?

Die qt.conf-Datei behebt zumindest dieses Problem nicht, wenn ich das richtig verstanden habe, dafür aber das mit der Hilfe (assistant), was ich persönlich als wichtiger empfinde.

Wenn noch jemand einen Vorschlag wegen der obigen Problematik hat, dann kann er den gerne noch mitteilen.

Allen anderen nochmals vielen Dank für die bisherige Hilfe.

Gruß

Winni