QMake: VS-.Net-".sln"-Dateien generieren lassen?

Verschiedenes zu Qt
Antworten
aportale
Beiträge: 10
Registriert: 3. Januar 2006 09:53

QMake: VS-.Net-".sln"-Dateien generieren lassen?

Beitrag von aportale »

Hallo, und ein frohes Neues :)

Ich baue mehrere statische Libs mit entsprechenden .pro-Files. Mittels QMake lasse ich dafür aus den .pro-Dateien die passenden .vcproj-Dateien generieren. Das klappt auf Anhieb gut.

Nun hängt meine Applikation von all diesen Libs ab. Deshalb brauche ich eine Solution (.sln), in der die ganzen Projekte und deren Abhängigkeiten ("Dependencies") untereinander definiert ist.

Frage: Kann ich mit QMake eine .sln-Datei mit Dependencies erstellen?

Viele Grüße,
Alessandro
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

qmake einfach auf das pro-File mit den ganzen subprojects laufen lassen (die mit template=subdirs).
Siehe auch die Qt-Sourcen als Beispiel
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
aportale
Beiträge: 10
Registriert: 3. Januar 2006 09:53

Beitrag von aportale »

Hi, danke für die Antwort.

(Ich muss erstmal zugeben, dass ich totaler qmake-Newbie bin). Mit dem normalen "subdirs" template bekomme ich nur (N)Makefiles gebacken, aber keine Visual Studio Solutions. Nun habe ich hier von dem "vcsubdirs"-template erfahren. Allerdings liefert mir das nur "leere" Solutions, also welche ohne Projekte. Hmm...

In den QT-Sourcen gibt es im Verzeichnis "examples" und weiter drunter, viele .sln-Dateien. Ich frage mich gerade, ob diese mit qmake generiert wurden, und wenn ja: wie wurde qmake da aufgerufen?.

QT-Version: 4.1
OS: Windows XP Home
Compiler: Visual Studio .Net 2003

Vielen Dank,
Alessandro
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

http://doc.trolltech.com/4.0/qmake-running.html#options

-> '-tp vc'.

Wenn normale Makefiles für template=subdirs korrekt erstellt werden, sollte es auch für .sln funktionieren.

siehe am Beispiel assistant:

Code: Alles auswählen

D:\qt-3.3\qt-4-msvc.net\tools>cd assistant

D:\qt-3.3\qt-4-msvc.net\tools\assistant>qmake -tp vc

D:\qt-3.3\qt-4-msvc.net\tools\assistant>cd ..

D:\qt-3.3\qt-4-msvc.net\tools>qmake -tp vc
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/assistant/lib\QtAssistantClient.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/linguist/linguist\linguist.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/linguist/lrelease\lrelease.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/linguist/lupdate\lupdate.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/linguist/qm2ts\qm2ts.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/porting/src\qt3to4.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/qtestlib/src\QtTest_debug.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/qtestlib/updater\updater.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/designer/src/uitools\QtUiToolsd.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/designer/src/lib\QtDesignerd.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/designer/src/components/lib\QtDesignerComponentsd.vcproj'
WARNING: Ignored (not found) 'D:/qt-3.3/qt-4-msvc.net/tools/designer/src/plugins/widgets\qt3supportwidgetsd.vcproj'
Die Warnings kommen nur weil ich in diesen Verzeichnissen keine .vcproj erstellt habe.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
aportale
Beiträge: 10
Registriert: 3. Januar 2006 09:53

Beitrag von aportale »

Klasse! Danke, das ist es. :D

Den "-tp" werde ich mir ordentlich merken, denn das macht das ganze sogar noch viel leichter cross plattform zu handlen.

Dank & Gruß,
Alessandro
aportale
Beiträge: 10
Registriert: 3. Januar 2006 09:53

Beitrag von aportale »

Hallo,

sorry, dass ich so spät nochmal nachhake... ist es möglich auch die gegenseitigen Dependencies der Libraries in der .sln-Datei zu generieren?

Meine Experimente sind bisher fehlgeschlagen. Ich hätte erwartet, dass ich sowas wie "REQUIRES += <lib-pfad>" oder ähnliches in eines der library-.pro-Files schreiben würde, und dann alles klappt.

Nochmals Danke und Viele Grüße,
Alessandro
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dependencies sollten eigentlich korrekt aufgelöst werden so wie qmake es auch mitbekommt. Mehr kann man da nicht machen, sollte aber reichen,
Werde das evtl. mal ausprobieren ob es mit 4.1 noch funktioniert, kann mir aber nicht vorstellen warum es nicht der Fall sein sollte.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
aportale
Beiträge: 10
Registriert: 3. Januar 2006 09:53

Beitrag von aportale »

Christian81 hat geschrieben:Werde das evtl. mal ausprobieren ob es mit 4.1 noch funktioniert, kann mir aber nicht vorstellen warum es nicht der Fall sein sollte.
Danke, bin mal gespannt :) Obwohl ich annehme, dass nicht Version 4.1 Schuld ist, sondern ich.

Ich habe systematisch folgende Variablen ausprobiert:
  • TARGETDEPS
    PRE_TARGETDEPS
    REQUIRES
Ihnen habe ich jeweils versuchsweise zugewiesen (bzw. addiert):
  • <.pro-Datei>
    <.pro-Verzeichnis>
    <.pro-Verzeichnis>/<.pro-Datei>
    <.lib-Datei>
Viele Grüße,
Alessandro
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich habe wohl Schuld. Melde mich wenn es korrigiert ist. Kann aber ein paar Tage dauern.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
aportale
Beiträge: 10
Registriert: 3. Januar 2006 09:53

Beitrag von aportale »

Christian81 hat geschrieben:Ich habe wohl Schuld. Melde mich wenn es korrigiert ist. Kann aber ein paar Tage dauern.
Also mit der kommerziellen QT 4.1-version klappt es (auch) nicht auf die Weise, wie ich das Ganze angehe.

Gruß,
Alessandro
aportale
Beiträge: 10
Registriert: 3. Januar 2006 09:53

Beitrag von aportale »

Und dass es noch nicht klappt hat einen Grund: Das Feature gibt es noch nicht. Aber es ist schon in der Pipeline: http://www.trolltech.com/developer/task ... y&id=79706

Jedenfalls danke für die Antworten,
viele Grüße,
Alessandro
Antworten