Qt-Projektdatei: Fügen Sie Bibliotheken je nach Kit hinzu

8

Ich habe ein QT-Projekt, das auf x86 linux und ARM linux embedded (yocto) läuft. Für jede Plattform habe ich ein Kit in QtCreator definiert, das auf den entsprechenden Compiler etc. Bezug nimmt.

Nun möchte ich LIBS zu meiner Profildatei hinzufügen, aber ich habe auf jeder Plattform verschiedene Bibliotheken. Ich habe keine Möglichkeit gefunden, die LIBS-Direktive abhängig vom kompilierenden Kit anzugeben.

Ich suche etwas wie:

%Vor%

Wie erreiche ich das? Vielen Dank im Voraus

    
mbue 03.07.2014, 09:14
quelle

3 Antworten

3

Ich habe eine Lösung für das Problem des OP zusammengekratzt, indem ich die Antwort verwendet habe, die von @vsz in den Kommentaren vorgeschlagen wurde: hier .

Ich habe zwei Kits, eins für den lokalen Desktop und eins für das Target_ARM-Gerät, und ich wollte eine Möglichkeit, einfach für beide zu bauen, ohne die .pro -Datei oder irgendetwas anderes speziell modifizieren zu müssen. Ich folgte der verknüpften Antwort und fügte folgendes hinzu:

  • In meinem Desktop-Kit (sowohl für Debug als auch für Release) habe ich CONFIG+=Desktop als zusätzliches Argument qmake im Schritt qmake build hinzugefügt.
  • Für das Target_ARM-Kit habe ich CONFIG+=Target_ARM an der gleichen Stelle hinzugefügt.

Nun, hier haben sich die Dinge von der verknüpften Antwort auf das Problem des OP verlagert. Ich wollte nicht einfach #define ed Variablen in meinem Code, ich wollte das Verhalten von qmake basierend auf dem ausgewählten Kit ändern. Ich weiß nicht, ob die integrierte Testfunktion CONFIG Blockbezeichnungen unterstützt oder nicht (dh CONFIG { _several lines here_ } ), aber es stellte sich heraus, dass ich die CONFIG Testfunktion vor jeder Zeile kopieren und einfügen konnte wollte bedingt sein; in der Tat könnte ich mehrere CONFIG s zusammen String, wie folgt:

%Vor%

Wie bereits angedeutet, wird in der obigen Anweisung qmake mit dem entsprechenden LIBS Pfad ausgeführt, abhängig davon, welches Kit und welche Konfiguration ich ausgewählt habe. Desktop->debug erzeugt ein Makefile mit /path/to/Desktop/debug/lib , während Desktop->release ein Makefile mit /path/to/Desktop/release/lib generiert. Ich habe ähnliche Aussagen für das Target_ARM Kit. Im Folgenden finden Sie ein Beispiel für die Auswahl des richtigen INCLUDEPATH : Beide Tests werden als wahr ausgewertet, wenn Target_ARM->release ausgewählt ist.

%Vor%

Insgesamt habe ich diese Methode verwendet, um LIBS, INCLUDEPATH, DEPENDPATH, and PRE_TARGETDEPS zu ändern. Ich habe 4 mögliche Konfigurationen von Include-Pfaden und Bibliotheken, abhängig davon, welches Kit ich auswähle ( Desktop oder Target_ARM ) und welche Build-Konfiguration ich auswähle ( build oder release ). Sobald dies eingerichtet ist, müssen Sie die .pro -Datei nicht mehr ändern, wählen Sie einfach Ihr Kit, Ihre Build-Konfiguration, führen Sie qmake aus und erstellen Sie sie dann neu.

Ich weiß nicht genau, wo die CONFIG+=Desktop (zum Beispiel) Daten gespeichert sind, aber ich würde es in der .pro.user Datei erraten. Wenn also jemand Ihre .pro -Datei aus einem Repo zieht, muss er das Projekt möglicherweise auf diese Weise mindestens einmal, aber nicht danach konfigurieren (solange die .pro.user -Datei bestehen bleibt). QT sollte wirklich einen einfachen Mechanismus für diese Front-und-Center haben, zumal eines ihrer Verkaufsargumente Multiple-Plattform-Integration ist. Wenn es einen besseren Weg dafür gibt, habe ich es noch nicht auf SO oder in der QT-Dokumentation gesehen.

    
yano 24.06.2016, 00:09
quelle
1

Sie haben alle qmake-Variablen hier: qt-project.org/doc/qt-4.8/qmake-function-reference.html

Sie können eine Variable definieren

%Vor%

Und Verwendung enthält Funktion

%Vor%     
Martin 03.07.2014 09:45
quelle
0
%Vor%     
user3910280 05.08.2014 12:14
quelle

Tags und Links