我知道这可能是一个类似于许多其他人的问题,但经过多次搜索并且未能获得明确有效的解决方案后,我不得不提出这个问题。
我正在使用 Qt 5.2.0 for Windows 32-bit(VS 2010,570 MB),我已经完成了编程,而且一切都完成了。但是现在我想将它作为.exe文件分发给我的同事,但是这样做没有复杂性,并且为了避免分发dll文件,我需要使用静态链接来构建程序。
请问您能说明如何使用静态链接构建整个程序 Qt 5.2.0 for Windows 32-bit(VS 2010,570 MB)?
感谢。
答案 0 :(得分:22)
您可以将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
参数的静态库名称不应包含静态库扩展名,例如Windows上的.lib
。
作为后备,您可以始终静态链接其他库,并将Qt dll文件放在可执行文件旁边,然后将该文件夹部署为“包”。这可能是你走的更容易的方式。