Windows自动编译脚本

以下是本人参与项目中设计到的自动编译脚本:

@rem echo OFF
setlocal enabledelayedexpansion
set MSBUILD_DIR="C:\Program Files (x86)\MSBuild\12.0\Bin"
set yyySDK_DIR=yyy-clean
set WaveFormxxx_DIR=waveform-clean
set zzz_DIR=zzz-clean

@echo "Clean WaveFormxxx"
!MSBUILD_DIR!\msbuild.exe ..\..\..\%WaveFormxxx_DIR%\msvc\Waveformxxx\Waveformxxx.vcxproj /t:Clean /p:Configuration=Release;platform=x64

@if "%1"=="" (set xxxRevision=0) else (set xxxRevision=%1)
@if "%2"=="" (set yyySDKRevision=0) else (set yyySDKRevision=%2)
@if "%3"=="" (set zzzRevision=0) else (set zzzRevision=%3)

@echo "xxxRevision = %xxxRevision%"
@echo "yyySDKRevision = %yyySDKRevision%"
@echo "zzzRevision = %zzzRevision%"

@if %xxxRevision% equ 0 (svn update "..\..\..\%WaveFormxxx_DIR%")else (svn update "..\..\..\%WaveFormxxx_DIR%" -r %xxxRevision%)
set result_svn_xxx=%ERRORLEVEL%
@if %result_svn_xxx% equ 0 ( echo "svn update WaveFormxxx success!" ) else ( goto _error )

@if %yyySDKRevision% equ 0 (svn update "..\..\..\%yyySDK_DIR%")else (svn update "..\..\..\%yyySDK_DIR%" -r %yyySDKRevision%)
set result_svn_yyy=%ERRORLEVEL%
@if %result_svn_yyy% equ 0 ( echo "svn update yyySDK success!" ) else ( goto _error )

@if %zzzRevision% equ 0 (svn update "..")else (svn update ".." -r %zzzRevision%)
set result_svn_zzz=%ERRORLEVEL%
@if %result_svn_zzz% equ 0 ( echo "svn update zzz success!" ) else ( goto _error )

@echo "Start build  WaveFormxxx"
!MSBUILD_DIR!\msbuild.exe ..\..\..\%WaveFormxxx_DIR%\msvc\Waveformxxx\Waveformxxx.vcxproj /p:Configuration=Release;platform=x64

set result_xxx=%ERRORLEVEL%
@if %result_xxx% equ 0 ( echo "WaveFormxxx build success!" ) else ( goto _error )

@echo "COPY WaveFormxxx FILES..."
xcopy /e /h /r /y "..\..\..\%WaveFormxxx_DIR%\include\*" "..\..\..\%yyySDK_DIR%\modules\include\"
xcopy /e /h /r /y "..\..\..\%WaveFormxxx_DIR%\include\*" "..\modules\include\"
xcopy /e /h /r /y "..\..\..\%WaveFormxxx_DIR%\msvc\Waveformxxx\x64\Release\Waveformxxx.lib" "..\modules\libs\win32\release\"

@echo "Clean yyySDK"
!MSBUILD_DIR!\msbuild.exe ..\..\..\%yyySDK_DIR%\msvc\yyySDK\yyySDK.vcxproj /t:Clean /p:Configuration=Release;platform=x64

@echo "Start build  yyySDK"
!MSBUILD_DIR!\msbuild.exe ..\..\..\%yyySDK_DIR%\msvc\yyySDK\yyySDK.vcxproj /p:Configuration=Release;platform=x64

set result_yyy=%ERRORLEVEL%
@if %result_yyy% equ 0 ( echo "yyySDK build success!" ) else ( goto _error )

@echo "COPY yyySDK FILES..."
xcopy /e /h /r /y "..\..\..\%yyySDK_DIR%\include\*" "..\modules\include\"
xcopy /e /h /r /y "..\..\..\%yyySDK_DIR%\msvc\yyySDK\x64\Release\yyySDK.lib" "..\modules\libs\win32\release\"

@echo "start build zzz"
rd /s /q "..\output\"

md "..\output\"
md "..\output\bin\"
md "..\output\bin\res\"
md "..\output\bin\i18n\"

@echo "create zzz.vcxproj"
set path=%VS120COMNTOOLS%\..\..\VC\bin\amd64\;%path%
qmake -spec win32-msvc -r -tp vc zzz.pro
.\translator zzz.vcxproj
@echo "Clean zzz"
!MSBUILD_DIR!\msbuild.exe .\zzz.vcxproj /t:Clean /p:Configuration=Release;platform=x64

@echo "BUILD zzz Release x64"
!MSBUILD_DIR!\msbuild.exe .\zzz.vcxproj /p:Configuration=Release;platform=x64
set result_zzz=%ERRORLEVEL%
@if %result_zzz% equ 0 ( echo "zzz build success!" ) else ( goto _error )

@echo "COPY zzz FILES..."

xcopy /e /h /r /y "..\bin\zzz.*" "..\output\bin\"
xcopy /e /h /r /y "..\res\*" "..\output\bin\res\"
xcopy /e /h /r /y ".\*.json" "..\output\bin\"
xcopy /e /h /r /y ".\i18n\zzz_chs.qm" "..\output\bin\i18n\"

@echo "Build zzz success!"

rd /s /q "..\output\bin\Release"
rd /s /q "..\output\bin\Debug"

cd ..\output\bin\
windeployqt.exe zzz.exe
@echo "Build Success!"

@echo "Creating revision file..."
del /f/q ".\_revision.txt"
echo "get zzz revision!"
echo "Creating revision file..."
svn info "..\.." > "..\tempzzzRevision.txt"
::@for %%a in (..\tempzzzRevision.txt) do @more +6 "%%a">$&move $ "%%a"

for /F "delims=" %%a in ('findstr "^最后修改的版本" ..\tempzzzRevision.txt') do (
	goto _search_zzz_cn
)
goto _search_zzz_en

:_search_zzz_cn
for /F "delims=" %%a in ('findstr "^最后修改的版本" ..\tempzzzRevision.txt') do set var=%%a
set var_zzz=zzz_svn_revision:%var:~9%
goto _search_zzz_result

:_search_zzz_en
for /F "delims=" %%a in ('findstr /C:"Last Changed Rev" ..\tempzzzRevision.txt') do set var=%%a
set var_zzz=zzz_svn_revision:%var:~18%
goto _search_zzz_result

:_search_zzz_result
echo %var_zzz% >> ".\_revision.txt"
@del ..\tempzzzRevision.txt

echo "get yyy_sdk revision!"
svn info "..\..\..\..\%yyySDK_DIR%" > "..\tempyyyRevision.txt"
for /F "delims=" %%a in ('findstr "^最后修改的版本" ..\tempyyyRevision.txt') do (
	goto _search_yyy_cn
)
goto _search_yyy_en

:_search_yyy_cn
for /F "delims=" %%a in ('findstr "^最后修改的版本" ..\tempyyyRevision.txt') do set var=%%a
set var_yyy=yyy_svn_revision:%var:~9%
goto _search_yyy_result

:_search_yyy_en
for /F "delims=" %%a in ('findstr /C:"Last Changed Rev" ..\tempyyyRevision.txt') do set var=%%a
set var_yyy=yyy_svn_revision:%var:~18%
goto _search_yyy_result

:_search_yyy_result
echo %var_yyy% >> ".\_revision.txt"
@del ..\tempyyyRevision.txt

echo "get waveformxxx revision!"
svn info "..\..\..\..\%WaveFormxxx_DIR%" > "..\tempxxxRevision.txt"
for /F "delims=" %%a in ('findstr "^最后修改的版本" ..\tempxxxRevision.txt') do (
	goto _search_xxx_cn
)
goto _search_xxx_en

:_search_xxx_cn
for /F "delims=" %%a in ('findstr "^最后修改的版本" ..\tempxxxRevision.txt') do set var=%%a
set var_xxx=xxx_svn_revision:%var:~9%
goto _search_xxx_result

:_search_xxx_en
for /F "delims=" %%a in ('findstr /C:"Last Changed Rev" ..\tempxxxRevision.txt') do set var=%%a
set var_xxx=xxx_svn_revision:%var:~18%
goto _search_xxx_result

:_search_xxx_result
echo %var_xxx% >> ".\_revision.txt"
@del ..\tempxxxRevision.txt
echo "Get svn revision success!"
@goto _end

:_error
@ echo "Build Error!"

:_end
pause

你可能感兴趣的:(启动脚本,WINDOWS自动编译)