the*_*ive 18 c++ qt qt-creator
我知道这可能是一个类似于其他许多问题的问题,但经过多次搜索并且未能获得明确有效的解决方案后,我不得不提出这个问题.
我正在使用Qt 5.2.0 for Windows 32位(VS 2010,570 MB),我已经完成了我的编程,而且一切都完成了.但是现在我想将它作为.exe文件分发给我的同事,但是这样做没有复杂性并且为了避免分发dll文件我需要使用静态链接来构建程序.
您能否描述一下我如何使用静态链接构建整个程序的Qt 5.2.0 for Windows 32-bit(VS 2010,570 MB)?
谢谢.
lpa*_*app 22
您可以使用CONFIG
qmake 的变量:
CONFIG += static
Run Code Online (Sandbox Code Playgroud)
要么
CONFIG += staticlib
Run Code Online (Sandbox Code Playgroud)
但是,您需要确保拥有要捆绑的所有库,可以作为静态库使用.
如果您遵守许可证,这也包括Qt框架本身.官方安装只设置动态库(.dll文件),因此您需要自己构建Qt才能实现此目的.
您可以使用以下命令Qt
静态构建以用于您自己的目的:
configure -developer-build -opensource -nomake examples -nomake tests -static
qmake -r
nmake
Run Code Online (Sandbox Code Playgroud)
请注意,通常在构建与您类似的第三方Qt软件时,最好qmake
使用以下参数调用以正确传递您的环境:
qmake -r -spec win32-msvc2010
Run Code Online (Sandbox Code Playgroud)
还请注意,正如Frank和ManuelH在评论中写道的那样,如果您的应用程序不是LGPL或至少与LGPL兼容的免费许可,则不允许静态链接,也不使用Qt的商业许可.在采取您的方法之前,最好确保这一点.
完成后,您可以LIBS
以常规方式使用该变量,如下所示:将静态库的路径与库名称一起传递给它,如下所示:
LIBS += -L/path/to/the/static/library -lstaticlibraryname
Run Code Online (Sandbox Code Playgroud)
请注意,传递给-l
参数的静态库名称不应包含静态库扩展名,例如.lib
在Windows上.
作为后备,您可以始终静态链接其他库,并将Qt dll文件放在可执行文件旁边,然后将该文件夹部署为"包".这可能是你走的更容易的方式.