windows系统mingw编译qt自动化批处理脚本V2
前一个版本有点小错误,不太完美,这个v2脚本经过自己最近的使用比较完美了,不用带src文件夹,include包含private文件夹的h文件,以后编译qt中其它的模块不会有提示private/private_xxx.h错误,编译qtcreator也会用到这些文件。
前期准备工作下载mingw、perl、jom(非必须),修改 set path=R:\mingw64\bin;R:\Perl\bin 这一行改为你自己mingw和perl的路径,如果不使用jom编译,修改jom -f Makefile 为 mingw32-make -f Makefile。把下面的脚本存为bat文件,放到qt源代码目录下即可,例如:R:\qt-everywhere-opensource-src-4.8.1,改完路径后,运行即可。
下载perl
下载mingw
下载mingw64和mingw32
下载jom
- C/C++ code
@echo offset path=R:\mingw64\bin;R:\Perl\bin;set QTDIR=%cd%echo -- 配置 debug-and-release --time /tconfigure -platform win32-g++ -opensource -debug-and-release -no-exceptions -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -no-qt3support -no-script -no-scripttools -no-webkit -nomake examples -nomake demosecho -- 编译 debug-and-release --jom -f Makefileecho -- 编译结束,开始优化 debug dll 文件 --time /tpausecd %QTDIR%\binfor /f "delims=" %%i in ('dir /b /a-d /s "*d4.dll"') do strip %%icd %QTDIR%\libfor /f "delims=" %%i in ('dir /b /a-d /s "*d4.dll"') do strip %%icd %QTDIR%\importsfor /f "delims=" %%i in ('dir /b /a-d /s "*d4.dll"') do strip %%icd %QTDIR%\pluginsfor /f "delims=" %%i in ('dir /b /a-d /s "*d4.dll"') do strip %%iecho -- 生成 include 文件 --copy /y "%QTDIR%\src\corelib\global\qconfig.h" "%QTDIR%\qconfig.h"rd /s /q "%QTDIR%\include"perl.exe %QTDIR%\bin\syncqt -copycopy /y "%QTDIR%\qconfig.h" "%QTDIR%\QtCore\qconfig.h"copy /y "%QTDIR%\mkspecs\win32-g++\*.*" "%QTDIR%\mkspecs\default\*.*"echo -- 开始清理无用的文件 --time /tpauseecho -- 删除目录,文件 --del /q "%QTDIR%\bin\*d4.dll"del /q "%QTDIR%\bin\createpackage"del /q "%QTDIR%\bin\createpackage.bat"del /q "%QTDIR%\bin\createpackage.pl"del /q "%QTDIR%\bin\elf2e32_qtwrapper"del /q "%QTDIR%\bin\elf2e32_qtwrapper.bat"del /q "%QTDIR%\bin\elf2e32_qtwrapper.pl"del /q "%QTDIR%\bin\patch_capabilities"del /q "%QTDIR%\bin\patch_capabilities.bat"del /q "%QTDIR%\bin\patch_capabilities.pl"del /q "%QTDIR%\bin\syncqt"del /q "%QTDIR%\bin\syncqt.bat"del /q "%QTDIR%\bin\findtr"del /q "%QTDIR%\bin\setcepaths.bat"rd /s /q "%QTDIR%\translations\debug"rd /s /q "%QTDIR%\translations\release"del /q "%QTDIR%\translations\*.ts"del /q "%QTDIR%\translations\check-ts.pl"del /q "%QTDIR%\translations\check-ts.xq"del /q "%QTDIR%\translations\polish.qph"del /q "%QTDIR%\translations\README"rd /s /q "%QTDIR%\lib\fonts"rd /s /q "%QTDIR%\lib\pkgconfig"rd /s /q "%QTDIR%\config.profiles"rd /s /q "%QTDIR%\config.tests"rd /s /q "%QTDIR%\demos"rd /s /q "%QTDIR%\doc"rd /s /q "%QTDIR%\examples"rd /s /q "%QTDIR%\qmake"rd /s /q "%QTDIR%\templates"rd /s /q "%QTDIR%\tools"rd /s /q "%QTDIR%\util"rd /s /q "%QTDIR%\tmp"del /s /q "%QTDIR%\*.pro"del /s /q "%QTDIR%\Makefile"del /s /q "%QTDIR%\Makefile.*"del /s /q "%QTDIR%\*LICENSE*"echo -- 结束 --echo 如果不想重新生成include文件,请手动删除 "%QTDIR%\qconfig.h"time /tpause
------解决方案--------------------
运用在CI中?