Seite 1 von 2

QT4 und XCode2.2 Code Completion

Verfasst: 30. Januar 2006 10:47
von redDOG11_de
Hallo Forum!
Hab zum Einstieg auch gleich mal 'ne Frage - hmmm - eigentlich zwei :)

QT(3) kenn ich schon länger (Linux/KDevelop) - die Kombination OSX mit XCode2.2 und QT4.0.1 ist allerdings noch ungewohnt.

Erste Frage: Wenn ich in den einzelnen Examples/Tutorial Verzeichnissen mit qmake -spec macx-xocde xyz.pro ein XCode Projekt erzeugen lasse, kann ich es - wie erwartet - öffnen und verwenden. Selbes Prozedere in einem eigenen Projekt/Verzeichnis und XCode meldet, dass die Projektdatei nicht zu "parsen" wäre ?! Klingt komisch, ist aber so...

Zweite Frage: Egal ob ich ein vorgepacktes XCode Projekt (s.o.) verwende oder aber ein Standard C++ Projekt (und selbst im Terminal mit -spec macx-g++ verarbeite) und quasi XCode nur als Codeeditor verwende, bekomme ich keine Codeergänzung angeboten. Da dieses Feature die Programmierung enorm vereinfacht/beschleunigt ist dies aber sehr schade. Include ich andere C/C++ Bibliotheken (z.B. auch qextserial) funktioniert die code completion. Auch wenn ich die QT4 Frameworks in XCode als externe Frameworks einbinde ändert das nichts.
Wenn die Codeergänzung mit beliebigen C++ Klassen und den eigenen Klassen funktioniert, müsste das doch eigentlich auch mit den QT4 Framework-Bibliotheken funktionieren?!

Hat jemand da Erfahrung oder Tipps?

Merci,
Markus

Verfasst: 30. Januar 2006 22:50
von originalhanno
Hallo redDog,
leider kann ich Dir auf Deine Frage keine Antwort geben.
Da Du aber zur Zeit der einzige bist, den ich finden kann, der mit XCode versucht Projekte mit QT erstellen, würde ich gerne eine Frage loswerden!

Ich habe auch wie Du ein Tutorial mit
"qmake -spec macx-xcode MyProject.pro"
'bearbeitet'
Heraus kam ein Ordner "MyProject.xcodeproj".
Darin befindet sich eine Datei "project.pbxproj".
Wenn ich die doppelklicke startet auch Xcode, es öffnet sich die Menüleiste,
aber es öffnet sich kein Fenster mit Code o. ä.
Ist das normal?
Was sollte passieren?
Sorry, dass ich Dir die Fragen stelle, ich finde aber leider keinen anderen der schon mal soweit gekommen ist...

Danke

Verfasst: 31. Januar 2006 07:17
von redDOG11_de
Hi originalhanno!

Macht nix, dass du mir auch nicht weiterhelfen kannst. Evtl. finden sich ja noch andere XCode-ler, oder es ergibt sich was aus der Diskussion.

Zu deiner Frage:
Ein XCode-Projekt "Ordner" funktioniert eigentlich genauso wie eine beliebige Applikation. In dem Ordner liegen mehrere Files/Ordner, die aber nicht direkt ausgeführt werden (sollten).
-rw-r--r-- 1 markus wheel 7K Jan 21 11:16 project.pbxproj
-rw-r--r-- 1 markus wheel 1K Jan 21 11:16 qt_makeqmake.mak
-rw-r--r-- 1 markus wheel 1K Jan 21 11:16 qt_preprocess.mak

Du startest ja auch die xyz.app mit 'nem Doppelklick (ja, ich weiß, dass man auch z.B. von der Console aus das eigentliche Binary im Applikationsordner ausführen kann...)
Im Fall eines XCode-Projekts heißt das, dass du normalerweise auf das Projekt-XYZ.xcode (blaues XCode Icon) doppelklickst und XCode startet!
XCode ließt dann die einzelnen Inhalte.
Normalerweise solltest du dann auch darauf hingewiesen werden, dass das QT XCode Projekt veraltet ist (Format 2.1. ?) und aktualisiert werden muss. Hängt aber wahrscheinlich von deiner QT und/oder XCode Version ab. Sources bzw. Gruppen oder Frameworks werden dann (zumindest bei mir) auch angezeigt.

Verfasst: 31. Januar 2006 11:10
von originalhanno
hallo,
vielen Dank für Deine Antwort.
Das mit dem Doppelklick habe ich schin gemacht, nur zeigt er dann keinen Code oder irgendwas an, es geht bloß die Menüleiste von Xcode.
Nun noch eine andere Frage zum allgemeinen vorgehen:
Ich muss erst ein .pro File haben, das ich dann mit qmake zu einem Xcode Projekt mache? Aber das .pro File ist doch schon ein fertiges Projekt (z.B. das Tutorial). Ich will doch erst mit XCode das Projekt 'basteln'. Wie fange ich da von 'null' an, also ohne vorhandenes Projekt.
Die Frage hört sich zugegeben ziemlich Hirnlos an, ich weiss aber nicht wie man sich das ganze vorstellen soll...

Danke

Verfasst: 31. Januar 2006 11:57
von redDOG11_de
:wink: das ist keineswegs eine dumme Frage - ich glaub eher ein "Henne, Ei" Problem.
Um Plattformunabhängig/Compilerunabhängig zu sein, verwendet QT eben ein nackiges .pro File. Im nächsten Schritt kann man sich daraus ein richtiges Makefle oder aber ein Projekt für XCode o.ä. generieren lassen.
Will sagen, selbst wenn QT voll in die IDE integriert wäre, würde im Hintergrund immer noch der qmake Prozeß ablaufen um ein QT .pro File, ein Makefile und den eigentlichen Compilerlauf (uic, moc, g++, o.ä) zu erzeugen bzw. zu starten.
Speziell für XCode ergibt das - zumindest meiner Überzeugung nach - folgenden Workflow:
- du erzeugst ein neues "Standard Make C++ Project" (oder so ähnlich, kann man finden :wink:)
- bis auf eine "hello, world" main.cpp ist das Projekt dann leer
- die löschst du und legst Order(=Gruppen) etc. nach Lust und Laune an
- da drin erstellst du nach Bedarf Header und Sourcen und schreibst deinen Code
- um Oberflächen und Widgets zu designen, nimmst du den QT-Designer her und speicherst die .ui in deinen Projektordner mit ab
- so, jetzt kannst du entweder in den XCode Projekteinstellungen eine neue Toolkette definieren, so dass ein Klick auf "Compile & Run" dir alles automatisch macht
- oder du machst eine Konsole auf, wechselst zu deinem Projektordner, setzt nach Anleitung die QT Bash-Variablen und gibst den bekannten Dreizeiler qmake -project, qmake -spec macx-g++ XYZ.pro, make von Hand ein

So mach ich es derzeit. Klappt auch soweit tadellos.

Einziges Problem:
Um das .ui weiter zu verwenden, muss erst einmal der Compiler drüber laufen. Dann erst erhälst du ein ui_xxx.h Header-File mit dem du gemäß QT4 Subclassing Mechanismus weiterarbeiten kannst.

Eine Integration in die XCode IDE wäre zugegeben ziemlich cool - so mit Klassenwizards, eingebundener Oberflächengestaltung, etc. Das scheint aber derzeit nicht in Aussicht zu stehen. Trolltech avisiert anscheinend eher den KDE/KDevelop Markt mit seinem Opensource-Zweig. Da einige Leute behaupten, die kommerzielle Version von QT4 wäre besser in XCode integriert, habe ich die Eval auch mal installiert. Bringt aber null!!!.
Ach ja, ich nutze die 4.0.1 Edition. Die 4.1.0 kann ich selbst mit viel Handarbeit nicht kompilieren. 1001 Linkerfehler im SVG Modul.

Grüße,
Markus

Verfasst: 31. Januar 2006 15:41
von originalhanno
Hi,
super super super...

danke vielmals für deine Mühe.
Ich werde mich heute Abend mal daran setzen, wenn die Uni Sch...
erledigt ist.
Danke erstmal, Du hast sehr sehr viele Fragen beantwortet, nach denen ich lange gesucht habe.
ich werde dann mal berichten...

LG

Michael

Verfasst: 1. Februar 2006 23:50
von originalhanno
hallo,
ich habe nun eininge Stunden damit verbracht, zu versuchen aus dem ganzen schlau zu werden / Ordnung ins Dunkel zu bringen.
Hier nun meine Erkenntnisse:
- Wenn ich ein Tutorial mit "qmake -spec macx-xcode t4.pro" in ein xcode Projekt umwandle, entsteht dabei ein Ordner "t4.xcodeproj".
Darin befinden sich, wir Du gesagt hast 3 Files, die wohl mein XCODE-Project "representieren".
Also habe ich einfach mal den Ordner in "t4.xcode" umbenannt, und siehe da: ich kann nun mit einem doppelclick diese "Datei" öffnen, und es werden auch sources und code und header in xcode angezeigt. Hab ich mich also gefreut, und versucht das ganze mal zu compilieren. Da hat mir xcode gesagt, das er die Datei "qt_make_qmake.mak" nicht im Ordner "t4.xcodeproj" finden kann. Ist ja auch klar, den Ordner hab ich ja zu einer Datei gemacht...
Hier bin ich wohl auf dem falschen Weg, denn so macht das ganze nicht viel Sinn :cry:
- Wie erstelle ich ein" Standard Make C++ Project". Mach ich das mit der Konsole, mit qmake oder mit Xcode oder ..... ???
-Wenn ich so ein Projekt erstellt habe, und alle darin befindliche gelöscht habe, wofür brauche ich dann Ordner(Gruppen)? Muss ich für Header und für Sources verschiedene Ordner anlegen? Ich dachte man kann alles in einen Ordner werfen?

Danke schon mal, für die wieder zahlreichen Fragen.
Währe cool wenn Du Sie mir wieder beantworten würdest...

Verfasst: 2. Februar 2006 08:51
von redDOG11_de
also zunächst mal: Es gibt verschiedene QT4 und XCode Versionen.
Wenn bei dir durch qmake ein .xcodeproj erzeugt wird, hast du entweder eine neuere QT4 Version als ich, oder irgendeine gepatchte Version (die hätte ich dann auch gern). QT4.0.1 erzeugt mir ein .xcode Projekt.
Wenn ich jetzt richtig informiert bin, speichert XCode bis Version 2.1 .xcode Projekte, ab 2.2 .xcodeproj Projekte! Du versuchst also ein neueres Speicherformat mit einem älteren Programm zu öffnen - das kann ja nicht gehen! In meiner Konfiguration mit dem neuesten XCode läuft es genau andersrum: Ich muss die .xcode meiner älteren qmake Version in das .xcodeproj Format konvertieren (geht automatisch beim ersten Öffnen mit XCode).
Ich empfehle dir also mal das neuste XCode zu laden, gibt's bei Apple für kostenlos!
Weiter, ein neues Projekt legst du in XCode über "new project" an. Im Wizard wählst du "Command Line Utility" -> "C++ Tool". Wie du dann in dem Projekt deine Dateien organisierst, ist dir überlassen - wenn du nicht weißt wie das geht, nimm dir halt mal die XCode Doku zur Brust!
Um dein neues Projekt zu kompilieren, wechselst du in das Projektverzeichnis un arbeitest mit dem bekannten qmake Dreizeiler.
Das hatte ich ja schon erklärt.

Du hast aber (glaube ich) noch nicht den ersten Entscheidungsschritt nachvollzogen:
- Entweder du startest in einem bereits vorhanden (QT) Verzeichnis und erzeugst durch qmake ein XCode Projekt. In diesem Projekt arbeitest du dann und gibst beim qmake Lauf an, dass wieder ein XCode Projekt erzeugt werden soll - XCode merkt das dann und aktualisert das gerade offene Projekt. Läuft also immer im Kreis
- Oder aber du verwendest XCode nur als C++ Projektverwaltung und Code Editor und läßt qmake ein GNU g++ Makefile für die Console erzeugen. Das mache ich und das ist das, was ich versucht habe zu beschreiben.

Sollte es immer noch nicht klar geworden sein wie man mit XCode und QT arbeitet, sag Bescheid, dann legen wir halt mal ein Miniprojekt an.

Grüße,
Markus

Verfasst: 2. Februar 2006 09:34
von originalhanno
guten morgen,
also das patchen meines qt-quellcodes habe ich selbst gemacht.
Schau mal hier:
http://217.7.119.98/sc/wiki/index.php/Q ... de_Support
Das compilieren von 4.1.0 ging auch problemlos, nachhdem ich die -sdk Option für Power PC angehängt habe!

Dann habe ich gestern Abend noch nachgedacht, und bin darauf gekommen, das es vielleicht an meiner nicht mehr aktuellen Xcode-Version liegen KÖNNTE.... :)
Hab dann auch angefangen, die 834 MB runterzuladen, das läuft noch gerade.
Dann hast Du wieder recht: Den Entscheidungsschritt am Anfang, hatte ich nicht nachvollzogen.
Ich möchte eigentlich meinen Code in XCode schreiben, dann auf compilieren drücken(Was dann wohl mit der Toolkette verknüpft sein muss), und dann auch mein debugging mit xcode durchführen, da mir scheint, dass das die komfortabelste Lösung ist. Kannst mich aber auch korrigieren...

Verfasst: 2. Februar 2006 10:30
von redDOG11_de
Morgen!

Immerhin nähern wir uns einer Lösung :D !

Die Wikiseite kannte ich schon - trotzdem merci. Aber egal ob ich mit "universal" oder mit 'nem PPC Framework als sdk kompilieren wollte - ich bin bisher gescheitert!
Irgendwo im neuen SVG Modul bzw. Framwork bricht der Lauf mit 1001 Linkerfehlern ab. :cry:

Hast du die Opensource QT Version direkt von Trolltech gezogen, oder von woanders?

Was die Integration angeht - das fände ich auch cool. Und angeblich sollen beim Erzeugen und Öffnen eines qmake xcodeproj Projekts ja auch diese Einstellungen bereits getätigt sein. Leider konnte ich (s.o.) bisher nur in den Example Verzeichnissen funktionierende xcodeproj erzeugen. In beliebigen anderen Orderner meldet XCode, dass die Projektdatei nicht geparst werdern könnte. :?:

Vielleicht kriegen wir ja zusammen einen funktionierende Integration hin.

Grüße,
Markus

Verfasst: 2. Februar 2006 10:37
von originalhanno
ja, eine gemeinsame Lösung ist immer was feines :)
Werde auch den gannzen Tag am Rechner verbringen...
Ich habe qt direkt von Trolltech...
jetzt ist auch xcode 2.2 geladen.
Wenn ich das .dmg starten will sagt er :
Folgende Images konnten nicht aktiviert werden:
Image:
xcode_2.2_8m654_018213974.dmg
Grund:
Fehler -199


:(((
:?:

Verfasst: 2. Februar 2006 10:43
von redDOG11_de
jepp!

Ich verbringe zwangsläufig den Tag vorm Rechner, da ich gerade meine DA schreibe (ne, hat nix mit QT zu tun). Das XCode 2.2 Paket hab ich nicht selbst gezogen - ein Kommilitone hatte schon eine DVD gebaut, die hab ich einfach kopiert!

Was der Fehler bedeutet kann ich dir deshalb auch nicht sagen - ich nehme aber mal stark an, dass dir den Mac sagen will, dass beim Laden des Images Fehler eingebaut wurden.
:cry:

Verfasst: 2. Februar 2006 11:00
von originalhanno
was studierst denn?

ich werde dann mal noch mal das .dmg laden, diesmal in eins.
hab ja sonst nix zu tun.... 8)

Verfasst: 2. Februar 2006 11:15
von redDOG11_de
noch :wink: Maschbau an der TUM.

Viel Erfolg beim Laden...

Verfasst: 2. Februar 2006 14:13
von originalhanno
jippiehjejeje

ich musste erstmal ein Freudentänzchen aufführen.
ES GEHT !!!!
Nachdem ich das von Dir geschriebene noch mal nachdenklich studiert hatte, und
http://scottcollins.net/blog/2005/07/tw ... xcode.html
bestimmt 30 mal gelesen habe ist es mir aufgefallen was Du mir sagen wolltest. Eigentlich ist es ja nicht so schwer.
Also:
- Ich habe Xcode 2.2 runtergeladen, diesmal in einem Durchgang.
- Xcode 2.2 installiert
- ein neues Standard C++ Consolen File aufgemacht
- mit der console in das verzeichnis gewechselt
- dort: qmake -spec macx-xcode MYPROJECT.pro
- das erzeugt ein .xcodeproj, welches ich auch mit xcode 2.2 aufmachen
kann
- nun muss ich nur noch in xcode auf BUILD oder BUILD and GO drücken
Xcode macht den Rest alleine, also keine Dreizeiler mehr
steht auch alles noch mal auf der Seite dessen link ich gepostet habe
-JIPPI
-jetzt noch die Integration vom Designer checken und loscoden

DANKE