如何使Qt和Qtcreator静态链接库而不是动态?

时间:2013-12-27 10:37:18

标签: c++ qt qt-creator

我知道这可能是一个类似于许多其他人的问题,但经过多次搜索并且未能获得明确有效的解决方案后,我不得不提出这个问题。

我正在使用 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)

感谢。

1 个答案:

答案 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文件放在可执行文件旁边,然后将该文件夹部署为“包”。这可能是你走的更容易的方式。