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
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:
CONFIG+=Desktop
als zusätzliches Argument qmake
im Schritt qmake
build hinzugefügt. 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:
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.
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.
Tags und Links qt cross-compiling qt-creator