Ответ 1
Вы можете использовать переменную CONFIG
для этого с помощью qmake:
CONFIG += static
или
CONFIG += staticlib
Однако вам нужно будет убедиться, что у вас есть все библиотеки, которые вы хотите связать, доступные как статические.
В том числе и сама структура Qt, если вы соответствуете лицензии для этого. В официальной установке устанавливаются только динамические библиотеки (DLL файлы), поэтому вам нужно будет построить Qt самостоятельно, чтобы выполнить это.
Вы можете использовать следующие команды для создания Qt
статически для вашей собственной цели:
configure -developer-build -opensource -nomake examples -nomake tests -static
qmake -r
nmake
Обратите внимание, что в общем случае при создании сторонних Qt-программ, подобных вашим, вы лучше вызываете qmake
со следующим параметром, чтобы правильно передать свою среду:
qmake -r -spec win32-msvc2010
Пожалуйста, также отметили, что, как пишет Frank и ManuelH в комментарии, статическая связь не допускается, если ваше приложение не имеет бесплатной лицензии либо LGPL, либо, по крайней мере, совместимо с LGPL, и вы не используете коммерческую лицензию для Qt. Лучше убедиться в этом, прежде чем поднять свой подход.
Как только это будет сделано, вы можете использовать переменную LIBS
в обычном порядке, например: передать путь вашей статической библиотеки к ней вместе с именем библиотеки, что-то вроде этого:
LIBS += -L/path/to/the/static/library -lstaticlibraryname
Обратите внимание, что имя статической библиотеки, переданное параметру -l
, не должно содержать расширение статической библиотеки, например .lib
в Windows.
В качестве резервной копии вы всегда можете связать другие библиотеки статически и поместить файлы dll Qt рядом с исполняемым файлом, и вы разворачиваете папку как "пакет". Это, вероятно, более легкий путь для вас.