Wie überprüfen Sie die ausgewählte version von Qt in einem .pro Datei?
Ich habe mehrere Versionen von Qt installiert, und ich brauche zu kompilieren meines Projekts mit allen von Ihnen.
Mit einem pro-Datei konnte ich nicht finden in der Dokumentation, wie eine nicht bedingte Kompilierung.
Ideal, das ist, was ich tun möchte:
QT_VERSION = 5 # this can be 4, set manually
if(QT_VERSION == 5) {
QT += widgets
}
if(QT_VERSION == 4) {
QT += gui
}
Natürlich, die wenn () - Befehl nicht vorhanden ist in pro-Dateien.
Gibt es einen besseren Weg, um das gleiche zu tun?
InformationsquelleAutor der Frage Pietro | 2013-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie bedingte Funktionen und Bereiche hier:
Allerdings gibt es ein paar Dinge, die Sie achten müssen in Ihrem ursprünglichen code:
Explizit definieren die Qt-version ist nicht notwendig, und man kann Kopfschmerzen bekommen, wenn Sie vergessen haben, das zu ändern .pro Datei. Stattdessen qmake automatisch definiert eine variable
QT_MAJOR_VERSION
für Sie.Mit
equals
funktioniert in diesem Fall. Jedoch, wie unten angegeben,equals
führt einen string-Vergleich. Es ist jedoch besser zu nutzengreaterThan
undlessThan
weil Ihr code wird automatisch aufhören zu arbeiten, wenn Sie versuchen, kompilieren Sie es mit Qt-6 (irgendwo in der Zukunft).Hinzufügen
gui
zu denQT
ist nicht nötig, da es standardmäßig enthalten ist.So, der code sollte sein:
Hier sind einige undokumentierte
qmake
Edelsteine:Gibt true zurück, wenn
func
definiert ist; Typ muss entwedertest
oderreplace
entsprichtdefineTest
oderdefineReplace
.(funktioniert auch als
isEqual
).Gibt true zurück, wenn var1 gleich var2 (string-Vergleich).
Gibt true zurück, wenn
var1
ist weniger alsvar2
(als Ganzzahl).Gibt true zurück, wenn
var1
größer ist alsvar2
(als Ganzzahl).Gibt true zurück, wenn eine variable
var
definiert wird, in die angegebene Datei. Zusätzlich kann es testen, um zu sehen, ob sich die angeforderten Wert.Etwas von einer Kreuzung zwischen
include()
undCONFIG += [feature]
.load(foo)
sucht nach einer Datei namens "foo".prf" in das standard-feature-Pfad, und führen Sie Ihre Inhalte sofort. Features, die darin enthalten sindCONFIG
sind die letzten, ausgeführt, nachdem Sie die ".pro" Datei fertig verarbeitet. Wieinclude()
es wird true zurückgeben, wenn die Datei gefunden wurde.InformationsquelleAutor der Antwort Nemanja Boric
Dies ist ein einfacher test, um zu tun. Dies ist, was wir getan haben, in QtSerialPort und auch einige andere Module in das Qt-framework:
Ähnliche und gemeinsame Bedingungen sind:
oder:
Hier finden Sie weitere QtSerialPort Beispiel haben wir tun es.
InformationsquelleAutor der Antwort lpapp
Sie können Prüfungen in eine Zeile wie diese:
!lessThan
es steht für gleich oder höher ist.InformationsquelleAutor der Antwort ephemerr
Nicht sicher, seit Wann (Qt5 ich denke, es ist versionAtLeast und versionAtMost test-Funktionen.
Beispiel:
P. S.: dieses Posting Antworten, da einfach googeln mit "qmake-check Qt-version" nicht bringt diese Verweise (aber dieser post hat).
InformationsquelleAutor der Antwort Youw