qt如何静态编译程序

很多时候,我们发布程序的时候,在没有qt依赖环境的地方,都需要将qt所依赖的动态库加入项目同路径.

这样会让强迫症的码农感觉很麻烦.要想一个exe走天下,我们就会想到静态编译了.

下面是具体实现步骤:

1.编译静态版本的qt库.

2.构建静态编译环境.

3.生成静态版本exe

编译静态qt库:

这里默认大家都已经安装了qt. 我编译的事mingw32版本的.msvc大体参考吧.

首先检查自己是否安装了peal和python以及gcc环境.

进入截图所示窗口,分别输入python  gcc -v  perl -v 看是否有对应的版本信息,

若无.请安装对应的软件并添加环境变量.安装过程中可将自动添加环境变量勾选.

这一步好了之后我们开始配置编译

在自己的qt环境里面新建mingw49_32_static文件夹.并从上图的cmd窗口移动到新建的文件夹内执行下面的配置项  ps:路径按实际值替换

H:\Qt5.6.3\5.6.3\Src\qtbase\configure -confirm-license -opensource -platform win32-g++ -debug-and-release -static -static-runtime -nomake examples -nomake tests -skip qtwebengine -prefix "H:\Qt5.6.3\5.6.3\mingw49_32_static" -opengl desktop -no-angle

大概解释下上面配置的含义:

-confirm-license:    自动确认许可证(使用开源或是商业)

-opensource:         编译并链接Qt的开源版本。

-platform win32-g++:   选择的编译版本

-debug-and-release:   两个版本均可静态编译.

-static:          创建并使用qt静态库

-static-runtime:       静态链接C/ c++运行时库

-nomake examples:          不编译例子

-skip qtwebengine:   从构建中排除qtwebengine模块

-prefix:            部署目录 

-opengl desktop:             启用 OpenGL 支持.不带参数时,这将会尝试自动检测的                OpenGL ES 2.0 和更高版本,或常规的桌面版OpenGL. 

-no-angle:                  直接使用OpenGL的API进行渲染,需要显卡厂商支持                      OpenGL ES 2.0 

 

如果需要添加或删减更多功能.请遵循config文档查阅即可. 

这步没出错的话继续执行下面的命令:编译

mingw32-make -j2   后面j2表示双线程编译.视电脑好坏可多开线程提升编译速度.

接下来执行安装命令

mingw32-make install

这些都完成以后

用记事本打开 H:\Qt5.6.3\5.6.3\mingw49_32_static\mkspecs\win32-g++\qmake.conf
找到 QMAKE_LFLAGS 和 QMAKE_LFLAGS_DLL将后面都改成 -static

最后找到H:\Qt5.6.3\5.6.3\mingw49_32\bin\qt.conf   将静态库里面的H:\Qt5.6.3\5.6.3\mingw49_32_static\bin的qt.conf  替换保存

不出意外的话静态版本编译环境就完成了.

 

剩下的就是 打开Qt Creator -> 工具 -> 选项 -> 构件和运行 -> Qt Versions.配置我们编译好的静态环境. 可以愉快的静态编译了.

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/787959687-freedom/p/11996391.html