Im .pro File weiteres .pro File aufrufen

Alles rund um die Programmierung mit Qt
Antworten
Christoph_BS
Beiträge: 11
Registriert: 6. April 2010 11:21

Im .pro File weiteres .pro File aufrufen

Beitrag von Christoph_BS » 3. August 2010 14:20

Hallo,

ich nutze in meinem QT-Projekt die Klasse qextserialport. Die qextserialport steuert die serielle Schnittstelle an, diese habe ich im Internet gefunden. Ich benutze die lib-Datei dieser Klasse.
Meine Frage ist nun, ob es möglich ist, in meinem Hauptprojekt, indem die qextserialport benutzt wird in der .pro Datei so die Einstellungen zu machen, dass die .pro-Datei der qextserialport aufgerufen wird. Damit würde die .lib der qextserialport automatisch erzeugt werden. Bisher muss ich immer erst die .pro der qextserialport ausführen und dann die .pro meines Hauptprojektes.
Viele Dank

padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh » 3. August 2010 21:41

du suchst: google "qt template=subdirs" :)

damit legst du in dem .pro mit template = subdirs die unterverzeichnisse fest in denen weitergesucht werden soll

in jedem unterverzeichnis kommt eine eigene .pro die das kompilieren der gui bzw lib (template=app/lib) regelt
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs

Christoph_BS
Beiträge: 11
Registriert: 6. April 2010 11:21

Beitrag von Christoph_BS » 4. August 2010 12:22

Vielen Dank erstmal für den Hinweis mit den SubDirs, das scheint die richtige Richtung zu sein.
Ich habe bisher in dem Makefile meines Hauptprogrammes folgendes am Anfang ergänzt (Da erst die lib von QExtSerialport erstellt werden soll), bevor das Hauptprojekt erstellt wird.

Code: Alles auswählen

TEMPLATE = subdirs
SUBDIRS = ../QExtSerial

CONFIG += ordered 
SUBDIRS += build 
Das .pro File von QExtSerialport existiert ja bereits, dort ist Template auch auf .lib gestellt.
Es passiert jedoch nichts, wenn ich das .pro File vom Hauptprogramm ausführe. Es kommt jedoch auch keine Fehlermeldung. ICh bin mir uach nicht sicher wofür der Parameter ordered steht.

solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix » 4. August 2010 15:17

Ich bin mir nicht sicher wie du das anwendest, aber wichtig ist einfach, dass du eine saubere Struktur deiner Profiles machst.

z.B.

Code: Alles auswählen

 ./QExtSerial 
           /QExtSerial.pro
 ./MyUeberProgram
          /MyUeberProgram.pro

 ./ProjectXy.pro
Und in der ProjectXY.pro nur noch die Subdirs:

Code: Alles auswählen

  TEMPLATE = subdirs
  CONFIG  += ordered

  SUBDIRS += QExtSerial
  SUBDIRS += MyUeberProgram
"ordered" bedeutet, dass die Projekte abhängig voneinander sind und daher in genau dieser Reihenfolge erstellt werden müssen (auf keinen Fall parallel..)

hth..

Christoph_BS
Beiträge: 11
Registriert: 6. April 2010 11:21

Beitrag von Christoph_BS » 4. August 2010 15:55

Achso vielen Dank, ich muss also ein drittes .pro File erstellen.
Mit welchem Kommando rufe ich das dann auf ?
bisher habe ich immer mit
qmake -t vcapp oder
qmake -t vclib
erstellt. Aber weder damit noch mit qmake oder qmake -t funktioniert es.

padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

(hoffentlich) Funktionierendes Minimalbeispiel

Beitrag von padreigh » 4. August 2010 15:56

Schau mal ins Zip, falls du eine link-fehler bekommst, musst du die Library libhellolib*.* irgendwo in den Pfad packen ... irgendwie scheint mein LIBS += -L/pfad/ -lhellolib nicht zu funzen ...

Das ganze Baut ein Widget mit einem Label ("Hello") und einem Button sowie die lib (mit einer statischen Funktion).

Der Button added die ausgabe der statischen lib-fkt. an den Text des Labels ... rate mal was bei rauskommt ;)

Die vielen obj/moc directories liegen daran das ichs gerne aufgeräumt habe ;)

Struktur und Inhalt des Zips:

Code: Alles auswählen

subDirs
|-- bin
|-- eins
|   |-- eins.pro
|   |-- hello.cpp
|   |-- hello.h
|   |-- main.cpp
|   |-- Makefile
|   |-- moc
|   `-- obj
|-- lib
|-- Makefile
|-- subDirs.pro
`-- zwei
    |-- hellolib.cpp
    |-- hellolib.h
    |-- Makefile
    |-- moc
    |-- obj
    `-- zwei.pro
Dateianhänge
subDirExample.zip
bittesehr ... ich hoffe das verdeutlicht es dir
(8.78 KiB) 147-mal heruntergeladen
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs

Christoph_BS
Beiträge: 11
Registriert: 6. April 2010 11:21

Beitrag von Christoph_BS » 5. August 2010 14:28

ja vielen Dank, so ähnlcih ist mein Programm auch aufgebaut.
Mit welchem Aufruf (Parameter) starte ich den die subDirs.pro ?
qmake -t vcapp ??

padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh » 5. August 2010 18:28

Schau dir mal die qmake Hilfe an ... dann wüsstest du was -t macht ...

Code: Alles auswählen

Usage: qmake [mode] [options] [files]

QMake has two modes, one mode for generating project files based on
some heuristics, and the other for generating makefiles. Normally you
<SNIPPPPPP>
  -t templ       Overrides TEMPLATE as templ
<SNAPPPPPP>
Also überschreibst du das subdirs template ... frag mal die Windowsnutzer, die haben vielleicht Ahnung mit dem vsirgendwas template ;) .. im Zweifelsfalle brauchst du das -t garnicht und gibst einfach in den .pro`s der subdirs das vs.... template an (da gibts 2, eins für apps, eins für libs ...)
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs

Antworten