ソースをダウンロードしてビルド、アーカイブを作成するバッチファイルです。
必要
VS2019
こちらの記事を参考にインストールしてください。
VS2017でもビルドできると思いますが、確認はしていません。
Git for Windows
公式サイトの「Download」をクリックします。
インストールで特に変更するところはありません。
7-Zip
公式サイトからダウンロードしてインストールします。
バッチファイル
拡張子を.batにして保存します。
@echo off setlocal cd /d %~dp0 set ARCH=x86 set TARGET=Build set CONFIG=Release set REPO_URL=https://github.com/xtne6f/EDCB.git set REPO_DIR=EDCB set OUT_DIR=package for %%i in (%*) do ( if /i "%%i" == "x86" set ARCH=x86 if /i "%%i" == "x64" set ARCH=x64 if /i "%%i" == "Both" set ARCH=Both if /i "%%i" == "Build" set TARGET=Build if /i "%%i" == "Rebuild" set TARGET=Rebuild if /i "%%i" == "Clean" set TARGET=Clean if /i "%%i" == "Debug" set CONFIG=Debug if /i "%%i" == "Release" set CONFIG=Release ) if not exist "%REPO_DIR%" ( git clone %REPO_URL% "%REPO_DIR%" ) cd /d "%REPO_DIR%" for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do ( set VS_INSTALL_DIR=%%i ) call "%VS_INSTALL_DIR%\Common7\Tools\VsDevCmd.bat" -no_logo if /i "%ARCH%" == "Both" ( call :Build x86 if errorlevel 1 exit /b 1 call :Build x64 if errorlevel 1 exit /b 1 ) else ( call :Build %ARCH% if errorlevel 1 exit /b 1 ) exit /b :Build set ARCH=%1 if /i "%ARCH%" == "x86" ( set PLATFORM=Win32 ) else ( set PLATFORM=%ARCH% ) pushd Document MSBuild EDCB_ALL.VS2015.sln /nologo /m /t:%TARGET% /p:Configuration=%CONFIG%;Platform=%PLATFORM% if errorlevel 1 exit /b 1 popd pushd ini\Tools MSBuild asyncbuf.vcxproj /nologo /m /t:%TARGET% /p:Configuration=%CONFIG%;Platform=%ARCH% if errorlevel 1 exit /b 1 MSBuild readex.vcxproj /nologo /m /t:%TARGET% /p:Configuration=%CONFIG%;Platform=%ARCH% if errorlevel 1 exit /b 1 MSBuild relayread.vcxproj /nologo /m /t:%TARGET% /p:Configuration=%CONFIG%;Platform=%ARCH% if errorlevel 1 exit /b 1 popd pushd ini\Tools\IBonCast MSBuild IBonCast.sln /nologo /m /t:%TARGET% /p:Configuration=%CONFIG%;Platform=%ARCH% if errorlevel 1 exit /b 1 popd pushd ini\Tools\tsidmove MSBuild tsidmove.sln /nologo /m /t:%TARGET% /p:Configuration=%CONFIG%;Platform=%ARCH% if errorlevel 1 exit /b 1 popd if /i "%TARGET%" == "Clean" exit /b set BIN_DIR=%ARCH%\%CONFIG% set DST_DIR=%OUT_DIR%\%ARCH%\%CONFIG% if exist "%DST_DIR%" rd /s /q "%DST_DIR%" md "%DST_DIR%" md "%DST_DIR%\BonDriver" md "%DST_DIR%\HttpPublic" md "%DST_DIR%\PostBatExamples" md "%DST_DIR%\RecName" md "%DST_DIR%\Tools" md "%DST_DIR%\Write" copy /v %BIN_DIR%\*.exe "%DST_DIR%" >nul copy /v %BIN_DIR%\*.dll "%DST_DIR%" >nul copy /v %BIN_DIR%\*.tvtp "%DST_DIR%" >nul copy /v %BIN_DIR%\RecName\*.dll "%DST_DIR%\RecName" >nul copy /v %BIN_DIR%\Write\*.dll "%DST_DIR%\Write" >nul copy /v Document\*.txt "%DST_DIR%" >nul copy /v ini "%DST_DIR%" >nul xcopy /e /v ini\HttpPublic "%DST_DIR%\HttpPublic" >nul copy /v ini\PostBatExamples "%DST_DIR%\PostBatExamples" >nul copy /v ini\Tools\*.bat "%DST_DIR%\Tools" >nul copy /v ini\Tools\*.ps1 "%DST_DIR%\Tools" >nul if /i "%ARCH%" == "x86" ( set TOOLS_BIN_DIR=%CONFIG% ) else ( set TOOLS_BIN_DIR=%ARCH%\%CONFIG% ) copy /v ini\Tools\%TOOLS_BIN_DIR%\*.exe "%DST_DIR%\Tools" >nul copy /v ini\Tools\tsidmove\%TOOLS_BIN_DIR%\tsidmove.exe "%DST_DIR%\Tools" >nul copy /v ini\Tools\IBonCast\%TOOLS_BIN_DIR%\IBonCast.dll "%DST_DIR%" >nul for /f "usebackq tokens=*" %%i in (`git rev-parse --short HEAD`) do set COMMIT_HASH=%%i set ARCHIVE_NAME=%OUT_DIR%\EDCB_%COMMIT_HASH%_%ARCH% set SEVENZIP=%ProgramFiles%\7-Zip\7z.exe if not exist "%SEVENZIP%" set SEVENZIP=%ProgramFiles(x86)%\7-Zip\7z.exe "%SEVENZIP%" a "%ARCHIVE_NAME%.7z" ".\%DST_DIR%\*" -mx=9 -ms=on -myx=9 exit /b
使い方
コマンドプロンプトでバッチファイルを実行するときに引数を指定します。
バッチファイル [x86|x64|Both] [Build|Rebuild|Clean] [Debug|Release]
引数のデフォルト値は以下です。
バッチファイル x86 Build Release
x86は32bit版、x64は64bit版、Bothは32bit版と64bit版の両方です。
バッチファイルと同じフォルダにある EDCB\package に出力されます。
tkntrec版をビルドする場合は「set REPO_URL=」に以下を書きます。
https://github.com/tkntrec/EDCB.git
ソースのダウンロード先を変更する場合は「set REPO_DIR=」にフォルダパスを書きます。
アーカイブの出力先を変更する場合は「set OUT_DIR=」にフォルダパスを書きます。
コメント
Toolフォルダの中身とかビルドされてないのが出来るのですが不要だからそのままで良い的な感じですか?
はい。
必須ではないのでビルドしていません。