Diese Antwort gilt für die Verwendung von MSYS2 mit mingw -w64 als Compiler unter Windows und qmake. Die QT-Version ist 5.15.0.
Durch die Installation des Pakets erhalten qt5-static Sie einen QT-Build, der ausführbare Dateien erzeugt, die nicht auf QT-DLLs angewiesen sind. (Beispiel Befehlszeile -pacman -Ss mingw64/mingw-w64-x86_64-qt5-static ).
Hier wird jedoch ein neues Problem eingeführt: Es besteht das nicht -static Flag nicht an gcc. Dies bedeutet, dass die ausführbare Datei zwar nicht von QT-DLLs abhängt, jedoch von libgcc-s, libwinpthread.dll usw.
Normalerweise wird dieses Problem behoben, indem CONFIG += staticqmake übergeben wird-static an gcc übergeben wird. Wie in den anderen Antworten angegeben, wird diese Konfigurationsoption bei einem qt-statischen Build jedoch ignoriert!
Um dies zu lösen, musste ich die gcc-Flags für die statische Verknüpfung in der qmake-Datei manuell angeben, dh:
QMAKE_CXXFLAGS += -static
QMAKE_LFLAGS_WINDOWS += -static
Dies führt zu einer (großen) Binärdatei ohne externe Abhängigkeiten außer Windows-System-DLLs.
(Falls es darauf ankommt: Mein Anwendungsfall war das Erstellen einer COM-In-Process-Server-DLL, die keine externen Abhängigkeiten aufweisen sollte. Ich habe auch TEMPLATE=libund verwendet. CONFIG += dll)
CONFIG += staticwürde das Hinzufügen dies lösen. Wenn Sie keine statische Kopie von Qt haben, greifen Sie zur Quelle und erstellen Sie sie. Es dauert mehrere Stunden, um statische Bibliotheken zu erhalten.