问题描述
随着Qt工程越来越多,目前已经有90多个工程了,有些源文件是公共的,修改一处就需要编译所有工程。试了Qt的子项目管理,发现能将所有工程全部添加到一个pro文件中,但没法一键全部编译,还得右键一个一个的编译。所以,就想写一个小的程序来实现批量的编译。
解决方案
基本思路就是先调用qmake编译pro文件生成makefile文件,然后调用nmake编译程序。小程序的作用就是生成一个批处理文件,然后编译的时候,直接执行批处理文件就行了。
[General]
qmake=D:/Qt/Qt5.5.1/5.5/msvc2010/bin/qmake.exe
nmake=D:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/vcvarsall.bat
jom=D:/Qt/Qt5.5.1/Tools/QtCreator/bin/jom.exe
project_dir=D:/svn/CRX100S/Src
project=BP2A-DfdtA-diffA
其中qmake、jom、nmake填写自己程序的安装路径,本文用的MSVC2010编译器,找到bat批处理文件;project_dir为源码路径,下面包含很多工程;project为工程列表,工程名称之间用“-”隔开。
编译程序读取配置信息,生成编译的compile.bat文件,运行bat文件即可批量编译。
set /a startS=%time:~6,2%
set /a startM=%time:~3,2%
echo %time%
cd D:/Program Files (x86)/Microsoft Visual Studio 10.0/VC
call vcvarsall.bat
cd D:/svn/CRX100S/Src/build/BP2A
D:/Qt/Qt5.5.1/5.5/msvc2010/bin/qmake D:/svn/CRX100S/Src/BP2A/BP2A.pro
D:/Qt/Qt5.5.1/Tools/QtCreator/bin/jom.exe -j 4
cd D:/svn/CRX100S/Src/build/DfdtA
D:/Qt/Qt5.5.1/5.5/msvc2010/bin/qmake D:/svn/CRX100S/Src/DfdtA/DfdtA.pro
D:/Qt/Qt5.5.1/Tools/QtCreator/bin/jom.exe -j 4
cd D:/svn/CRX100S/Src/build/diffA
D:/Qt/Qt5.5.1/5.5/msvc2010/bin/qmake D:/svn/CRX100S/Src/diffA/diffA.pro
D:/Qt/Qt5.5.1/Tools/QtCreator/bin/jom.exe -j 4
set /a endS=%time:~6,2%
set /a endM=%time:~3,2%
echo %time%
set /a diffS_=%endS%-%startS%
set /a diffM_=%endM%-%startM%
echo cost:%diffM_% : %diffS_%
pause
源码见资源文件Compile.rar源码