qt_add_library

Erzeugt und schließt eine Bibliothek ab.

Der Befehl ist in der Komponente Core des Pakets Qt6 definiert, die wie folgt geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Core)

Dieser Befehl wurde in Qt 6.2 eingeführt.

Synopse

qt_add_library(target
    [STATIC | SHARED | MODULE | INTERFACE | OBJECT]
    [MANUAL_FINALIZATION]
    sources...
)

Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_add_library(). Er unterstützt die gleichen Argumente wie dieser Befehl.

Beschreibung

qt_add_library() ist ein Wrapper um den eingebauten CMake-Befehl add_library(). Er führt die folgenden Aufgaben aus:

  • Erzeugen eines CMake-Targets eines geeigneten Bibliothekstyps.
  • Finalisierung des CMake-Targets.

Target-Erstellung

Der Typ der erstellten Bibliothek kann explizit mit einem der Schlüsselwörter STATIC, SHARED, MODULE, INTERFACE oder OBJECT angegeben werden, genau wie bei add_library(). Wenn keines dieser Schlüsselwörter angegeben wird, hängt der erzeugte Bibliothekstyp davon ab, wie Qt gebaut wurde. Wenn Qt statisch gebaut wurde, wird eine statische Bibliothek erstellt. Andernfalls wird eine Shared Library erstellt. Beachten Sie, dass sich dies von der Funktionsweise des CMake-Befehls add_library() unterscheidet, bei dem die Variable BUILD_SHARED_LIBS den Typ der erstellten Bibliothek steuert. Seit 6.7 berücksichtigt der Befehl qt_add_library() BUILD_SHARED_LIBS bei der Entscheidung über den Bibliothekstyp nur, wenn die Variable explizit gesetzt ist und QTP0003 auf NEW gesetzt ist.

Jede bereitgestellte sources wird an den internen Aufruf von add_library() weitergereicht.

Beendigung

Nachdem ein Ziel erstellt wurde, können weitere Verarbeitungs- oder Finalisierungsschritte erforderlich sein. Die abschließende Verarbeitung wird durch den Befehl qt_finalize_target() durchgeführt.

Die Finalisierung kann entweder als Teil dieses Aufrufs erfolgen oder auf einen Zeitpunkt nach der Rückkehr dieses Befehls verschoben werden (sie sollte aber immer noch im selben Verzeichnisbereich stattfinden). Bei der Verwendung von CMake 3.19 oder höher wird die Finalisierung automatisch auf das Ende des aktuellen Verzeichnisbereichs verschoben. Dies gibt dem Aufrufer die Möglichkeit, Eigenschaften des erstellten Ziels zu ändern, bevor es fertiggestellt wird. Bei der Verwendung von CMake-Versionen vor 3.19 wird die automatische Verschiebung nicht unterstützt. In diesem Fall wird die Finalisierung unmittelbar vor der Rückkehr dieses Befehls durchgeführt.

Unabhängig von der CMake-Version kann das Schlüsselwort MANUAL_FINALIZATION angegeben werden, um anzuzeigen, dass Sie qt_finalize_target() stattdessen zu einem späteren Zeitpunkt explizit selbst aufrufen werden. Im Allgemeinen sollte MANUAL_FINALIZATION nicht benötigt werden, es sei denn, das Projekt muss CMake 3.18 oder früher unterstützen.

Siehe auch qt_finalize_target(), qt_add_executable(), und QTP0003.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.