Qt6-Modul

Neu in Meson 0.57.0

Das Qt6-Modul bietet Methoden, um die verschiedenen Tools und Schritte, die für Qt erforderlich sind, automatisch zu verwalten.

Warnung: Vor Version 0.63.0 konnte Meson Qt 6.1 oder neuer nicht finden, da die Qt-Tools in das Unterverzeichnis libexec verschoben wurden und die Toolnamen nur mit der Hauptversionsnummer von Qt, z. B. qmake6, ergänzt wurden.

compile_resources

Neu in 0.59.0

Kompiliert Qt's Ressourcensammlungsdateien (.qrc) in C++-Dateien zur Kompilierung.

Es nimmt keine positionalen Argumente und die folgenden Schlüsselwortargumente entgegen:

  • name (string | leer): Wenn angegeben, wird eine einzelne .cpp-Datei generiert und die Ausgabe aller qrc-Dateien wird in dieser Datei kombiniert, andernfalls wird jede qrc-Datei in ihre eigene cpp-Datei geschrieben.
  • sources (Datei | Zeichenkette | benutzerdefiniertes Ziel | benutzerdefiniertes Ziel-Index | Generator-Ausgabe)[]: Eine Liste von Quellcodedateien, die transpilert werden sollen. Erforderlich, muss mindestens eine Quellcodedatei enthalten.
    Neu in 0.60.0: Unterstützung für custom_target, custom_target_index und generator_output.
  • extra_args string[]: Zusätzliche Argumente, die direkt an qt-rcc übergeben werden.
  • method Zeichenkette: Die Methode zur Erkennung von Qt, siehe dependency()

compile_ui

Neu in 0.59.0

Kompiliert Qt's ui-Dateien (.ui) in Header-Dateien.

Es nimmt keine positionalen Argumente und die folgenden Schlüsselwortargumente entgegen:

  • sources (Datei | Zeichenkette | benutzerdefiniertes Ziel | benutzerdefiniertes Ziel-Index | Generator-Ausgabe)[]: Eine Liste von Quellcodedateien, die transpilert werden sollen. Erforderlich, muss mindestens eine Quellcodedatei enthalten.
    Neu in 0.60.0: Unterstützung für custom_target, custom_target_index und generator_output.
  • extra_args string[]: Zusätzliche Argumente, die direkt an qt-uic übergeben werden.
  • method Zeichenkette: Die Methode zur Erkennung von Qt, siehe dependency()
  • preserve_paths bool: Neu in 1.4.0. Wenn true, gibt an, dass die Ausgabedateien ihre Verzeichnisstruktur innerhalb des temporären Zielverzeichnisses beibehalten müssen. Wenn beispielsweise eine Datei namens subdir/one.input verarbeitet wird, generiert sie eine Datei {target private directory}/subdir/one.out, wenn true ist, und {target private directory}/one.out, wenn false ist (Standard).

compile_moc

Neu in 0.59.0

Kompiliert Qt's moc-Dateien (.moc) in Header- und/oder Quelldateien. Mindestens eines der Schlüsselwortargumente headers und sources muss angegeben werden.

Es nimmt keine positionalen Argumente und die folgenden Schlüsselwortargumente entgegen:

  • sources (Datei | Zeichenkette | benutzerdefiniertes Ziel | benutzerdefiniertes Ziel-Index | Generator-Ausgabe)[]: Eine Liste von Quellcodedateien, die in .moc-Dateien transpilert und manuell eingebunden werden sollen.
    Neu in 0.60.0: Unterstützung für custom_target, custom_target_index und generator_output.
  • headers (Datei | Zeichenkette | benutzerdefiniertes Ziel | benutzerdefiniertes Ziel-Index | Generator-Ausgabe)[]: Eine Liste von Header-Dateien, die in .cpp-Dateien transpilert werden sollen.
    Neu in 0.60.0: Unterstützung für custom_target, custom_target_index und generator_output.
  • extra_args string[]: Zusätzliche Argumente, die direkt an qt-moc übergeben werden.
  • method Zeichenkette: Die Methode zur Erkennung von Qt, siehe dependency()
  • dependencies: Abhängigkeitsobjekte, deren Include-Verzeichnisse von moc verwendet werden.
  • include_directories (string | IncludeDirectory)[]: Eine Liste von include_directory()-Objekten, die beim Transpilieren der .moc-Dateien verwendet werden.
  • preserve_paths bool: Neu in 1.4.0. Wenn true, gibt an, dass die Ausgabedateien ihre Verzeichnisstruktur innerhalb des temporären Zielverzeichnisses beibehalten müssen. Wenn beispielsweise eine Datei namens subdir/one.input verarbeitet wird, generiert sie eine Datei {target private directory}/subdir/one.out, wenn true ist, und {target private directory}/one.out, wenn false ist (Standard).

preprocess

Ziehen Sie in Betracht, stattdessen compile_resources, compile_ui und compile_moc zu verwenden.

Nimmt Quellen für moc, uic und rcc entgegen und wandelt sie in C++-Dateien zur Kompilierung um.

Hat die folgende Signatur: qt.preprocess(name: str | None, *sources: str)

Wenn der Parameter name übergeben wird, werden alle rcc-Dateien in eine einzige Ausgabedatei geschrieben.

Veraltet in 0.59.0: Dateien, die in den variablen sources-Argumenten sowie im Schlüsselwortargument sources angegeben wurden, wurden unverändert durch die Präprozessorprogramme weitergeleitet. Tun Sie dies nicht – fügen Sie einfach die Ausgabe von preprocess() zu einer anderen Quellenliste hinzu.

sources = files('a.cpp', 'main.cpp', 'bar.c')
sources += qt.preprocess(qresources : ['resources'])

Diese Methode nimmt die folgenden Schlüsselwortargumente entgegen:

  • qresources (string | File)[]: An den RCC-Compiler übergeben.
  • ui_files: (string | File | CustomTarget)[]: An den uic-Compiler übergeben.
  • moc_sources: (string | File | CustomTarget)[]: An den moc-Compiler übergeben. Diese werden in .moc-Dateien umgewandelt, die #included werden sollen.
  • moc_headers: (string | File | CustomTarget)[]: An den moc-Compiler übergeben. Diese werden in .cpp-Dateien umgewandelt.
  • include_directories (IncludeDirectories | string)[], die Verzeichnisse, die dem Header-Suchpfad für moc hinzugefügt werden sollen.
  • moc_extra_arguments Zeichenkette[]: Zusätzliche Argumente für moc.
  • uic_extra_arguments Zeichenkette[]: Zusätzliche Argumente für uic.
  • rcc_extra_arguments Zeichenkette[]: Zusätzliche Argumente für rcc.
  • dependencies Abhängigkeit[]: Abhängigkeitsobjekte, die von moc benötigt werden.
  • Veraltet in 0.59.0.: sources: eine Liste zusätzlicher Quellcodedateien, die unverändert zur Ausgabe hinzugefügt werden.
  • preserve_paths bool: Seit 1.4.0. Wenn true, gibt an, dass die Ausgabedateien ihre Verzeichnisstruktur innerhalb des temporären Zielverzeichnisses beibehalten müssen. Wenn beispielsweise eine Datei namens subdir/one.input verarbeitet wird, generiert sie eine Datei {target private directory}/subdir/one.out, wenn true ist, und {target private directory}/one.out, wenn false ist (Standard).

Gibt ein Array von Zielen und Quellen zurück, die an ein Kompilierungsziel übergeben werden sollen.

compile_translations

Diese Methode generiert die notwendigen Ziele zum Erstellen von Übersetzungsdateien mit lrelease. Sie nimmt keine positionalen Argumente entgegen und die folgenden Schlüsselwortargumente:

  • ts_files (Datei | Zeichenkette | benutzerdefiniertes Ziel | benutzerdefiniertes Ziel-Index | Generator-Ausgabe)[]: Die Liste der Eingabetranslate-Dateien, die vom Qt-Tool lupdate erstellt wurden.
    Neu in 0.60.0: Unterstützung für custom_target, custom_target_index und generator_output.
  • install bool: Wenn true, wird dieses Ziel während des Installationsschritts installiert (optional).
  • install_dir string: Verzeichnis, in das installiert werden soll (optional).
  • build_by_default bool: Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt, d. h. beim Aufruf von meson compile; der Standardwert ist false (optional).
  • qresource Zeichenkette: rcc-Quelldatei zum Extrahieren von ts_files; kann nicht mit dem kwarg ts_files verwendet werden.
  • rcc_extra_arguments Zeichenkette[]: Zusätzliche Argumente für rcc (optional), wenn mit `qresource` verwendet.

Gibt entweder eine Liste von benutzerdefinierten Zielen für die kompilierten Übersetzungen zurück oder, wenn eine qresource-Datei verwendet wird, ein einzelnes benutzerdefiniertes Ziel, das die verarbeitete Quelldatei enthält und an ein Hauptbuild-Ziel übergeben werden sollte.

has_tools

Diese Methode gibt true zurück, wenn alle von diesem Modul verwendeten Werkzeuge gefunden werden, andernfalls false.

Sie sollte verwendet werden, um optionalen Qt-Code zu kompilieren.

qt6 = import('qt6')
if qt6.has_tools(required: get_option('qt_feature'))
  moc_files = qt6.preprocess(...)
  ...
endif

Diese Methode nimmt die folgenden Schlüsselwortargumente entgegen:

  • required bool | FeatureOption: Standardmäßig ist required auf false gesetzt. Wenn required auf true oder ein aktiviertes feature gesetzt ist und einige Werkzeuge fehlen, wird Meson abgebrochen.
  • method Zeichenkette: Die Methode zur Erkennung von Qt, siehe dependency()
  • tools: Zeichenkette[]: Seit 1.6.0. Liste der zu prüfenden Werkzeuge. Testbare Werkzeuge sind moc, uic, rcc und lrelease. Standardmäßig ist tools auf ['moc', 'uic', 'rcc', 'lrelease'] gesetzt.

Abhängigkeiten

Siehe Qt-Abhängigkeiten.

Das Argument 'modules' wird verwendet, um Qt-Module im Projekt einzubinden. Siehe die Qt-Dokumentation für die Liste der Module.

Das Argument 'private_headers' ermöglicht die Verwendung der privaten Header von Qt-Modulen.

Beispiel

Ein einfaches Beispiel würde wie folgt aussehen:

qt6 = import('qt6')
qt6_dep = dependency('qt6', modules: ['Core', 'Gui'])
inc = include_directories('includes')
moc_files = qt6.compile_moc(headers : 'myclass.h',
                            extra_arguments: ['-DMAKES_MY_MOC_HEADER_COMPILE'],
                            include_directories: inc,
                            dependencies: qt6_dep)
translations = qt6.compile_translations(ts_files : 'myTranslation_fr.ts', build_by_default : true)
executable('myprog', 'main.cpp', 'myclass.cpp', moc_files,
           include_directories: inc,
           dependencies : qt6_dep)

Manchmal sind Übersetzungen über qresource-Dateien in die Binärdatei eingebettet. In diesem Fall müssen die ts-Dateien nicht explizit aufgelistet werden, sondern werden aus den in der qresource-Datei aufgelisteten, erstellten qm-Dateien abgeleitet. Zum Beispiel:

qt6 = import('qt6')
qt6_dep = dependency('qt6', modules: ['Core', 'Gui'])
lang_cpp = qt6.compile_translations(qresource: 'lang.qrc')
executable('myprog', 'main.cpp', lang_cpp,
           dependencies: qt6_dep)

Die Ergebnisse der Suche sind