【QT】QT4.8.6静态编译

时间:2021-08-02 08:42:13

需要重新编译 qmake ,使之编译程序时为静态( static )而非共享( share )

  • 修改安装目录/mkspecs文件夹下的win32-g++/qmake.conf,分别找到并修改QMAKE_LFLAGS = -staticQMAKE_LFLAGS_DLL = -static,以指定编译出的 qmake 的编译模式
  • 打开Qt 4.8.6 Command Prompt(不要以管理员身份运行),设置set QMAKESPEC=win32-g++,并配置configure -confirm-license -opensource -prefix "C:\Qt\4.8.6" -debug-and-release -static -platform win32-g++ -nomake demos -nomake examples -nomake tests -fast -mp,注意C:\Qt\4.8.6应该对应当前qt的安装路径
  • 编译完mingw32-make install一下
  • 最初编译时设定的安装路径是F:\Qt\Qt_4.8.6_static,如果想将它复制到其他盘符,并且改名,例如:C:\Qt\4.8.6_MinGW。这样一来会有问题吗?是的,会有问题,因为Qt有绝对路径依赖症。改名后C:\Qt\4.8.6_MinGW\bin\ exe 执行程序都会出问题,要么程序打不开,要么多国语言发生异常。
    用记事本打开C:\Qt\4.8.6_MinGW\bin\qmake.exe,查找关键字qt_prfxpath,出现:qt_prfxpath=C:\Qt\Qt_4.8.6_static,可以看出这是原始的安装路径。
    我们不可以手动去修改qmake.exe里面的内容,真正有效的解决方法是在C:\Qt\4.8.6_MinGW\bin\路径下创建一个qt.conf文件,内容为
    [paths]
    prefix = C:/Qt/4.8.6_MinGW

    请注意:qt.conf文件必须是ANSI格式,并且Prefix的斜杠风格采取的是 Linux 的,而非 Windows ,否则会失效。或者使用 "Prefix=" ,如此一来,任意路径有效。