Windows自动编译脚本

本文详细介绍了一个自动化的编译脚本,该脚本用于清理、更新和构建多个项目,包括WaveFormxxx、yyySDK和zzz。脚本使用MSBuild进行构建,通过SVN更新代码,并将编译后的文件复制到指定目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

@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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值