Auf dieser Seite

qt_add_library

Erstellt eine Bibliothek und schließt sie 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.

Übersicht

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

Wenn versionlose Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_add_library() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.

Beschreibung

qt_add_library() ist ein Wrapper um den in CMake integrierten Befehl „ add_library() “. Er führt die folgenden Aufgaben aus:

  • Erstellt ein CMake-Ziel vom entsprechenden Bibliothekstyp.
  • Er übernimmt die Abwicklung des CMake-Ziels.

Erstellung des Ziels

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 Typ der erstellten Bibliothek davon ab, wie Qt kompiliert wurde. Wurde Qt statisch kompiliert, wird eine statische Bibliothek erstellt. Andernfalls wird eine gemeinsam genutzte Bibliothek 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 Version 6.7 berücksichtigt der Befehl „ qt_add_library() “ bei der Festlegung des Bibliothekstyps die Variable „ BUILD_SHARED_LIBS “ nur dann, wenn diese explizit gesetzt ist und „QTP0003“ auf „ NEW “ gesetzt ist.

Alle angegebenen „ sources “ werden an den internen Aufruf von „ add_library() “ weitergegeben.

Abschluss

Nachdem ein Ziel erstellt wurde, sind möglicherweise weitere Verarbeitungs- oder Abschlussschritte erforderlich. Die Abschlussverarbeitung wird durch den Befehl `qt_finalize_target()` implementiert.

Die Finalisierung kann entweder im Rahmen dieses Aufrufs erfolgen oder auf einen Zeitpunkt nach der Rückgabe dieses Befehls verschoben werden (sie sollte jedoch weiterhin im selben Verzeichnisbereich stattfinden). Bei 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 finalisiert wird. Bei Verwendung von CMake-Versionen vor 3.19 wird die automatische Verschiebung nicht unterstützt. In diesem Fall erfolgt die Finalisierung unmittelbar vor der Rückgabe dieses Befehls.

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

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

© 2026 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.