EDCBをビルドするバッチファイル

スポンサーリンク
スポンサーリンク
TS抜き

ソースをダウンロードしてビルド、アーカイブを作成するバッチファイルです。

スポンサーリンク
スポンサーリンク

必要

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_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 https://github.com/xtne6f/EDCB.git "%REPO_DIR%"
)

cd /d "%REPO_DIR%"

if /i "%TARGET%" == "Clean" (
    versionhash.sh clean
) else (
    versionhash.sh gen
)

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 misc.sln /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 SRC_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 %SRC_BIN_DIR%\*.dll         "%DST_DIR%" >nul
copy /v %SRC_BIN_DIR%\*.exe         "%DST_DIR%" >nul
copy /v %SRC_BIN_DIR%\*.tvtp        "%DST_DIR%" >nul
copy /v %SRC_BIN_DIR%\RecName\*.dll "%DST_DIR%\RecName" >nul
copy /v %SRC_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 TOOL_SRC_DIR=%CONFIG%
) else (
    set TOOL_SRC_DIR=%ARCH%\%CONFIG%
)

copy /v ini\Tools\%TOOL_SRC_DIR%\*.exe                 "%DST_DIR%\Tools" >nul
copy /v ini\Tools\IBonCast\%TOOL_SRC_DIR%\IBonCast.dll "%DST_DIR%" >nul
copy /v ini\Tools\tsidmove\%TOOL_SRC_DIR%\tsidmove.exe "%DST_DIR%\Tools" >nul

for /f "usebackq tokens=2*" %%i in (`findstr /r /c:"^#define EDCB_VERSION_TAG" Common\CommonResource.h`) do set VERSION=%%~j

for /f "usebackq tokens=*" %%i in (`git rev-parse --short HEAD`) do set GIT_HASH=%%i

set ARCHIVE_NAME=%OUT_DIR%\EDCB_%VERSION%_%GIT_HASH%_%ARCH%

for /f "usebackq tokens=1,2*" %%i in (`reg query HKLM\Software\7-Zip /v Path`) do if "%%i" == "Path" set PATH=%%k;%PATH%

7z 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 に出力されます。

ソースのダウンロード先を変更する場合は「set REPO_DIR=」にフォルダパスを書きます。

アーカイブの出力先を変更する場合は「set OUT_DIR=」にフォルダパスを書きます。

コメント

  1. まこ より:

    Toolフォルダの中身とかビルドされてないのが出来るのですが不要だからそのままで良い的な感じですか?

  2. 小吉 より:

    ありがたく使わせてもらってます
    最後の方の7z.exe指定するところ、なんか変になってますね(B25Decoderのバッチも)
    まあ支障はないですが

    • 小吉 より:

      ってあれ、コメント書いてリロードしたら直ってた…
      余計なお世話でしたらすみません!

      • あき より:

        7z.exeがインストールされているパス取得のためのレジストリキーが間違ってますね。
        x86やx64の指定ならアーカイブされずにビルド自体は行われるのでわかりにくいですが、Bothを指定するとx86ビルド後にエラーで落ちてx64がビルドされないのでわかると思います。
        誤:HKLM\Software-Zip
        正:HKLM\SOFTWARE\7-Zip
        この修正で正しく動作するはずです。他のバッチファイルも同様だと思います。

        • thtsf より:

          いつもWordPressにログインした状態で見ていたので気づきませんでしたが、ログアウトした状態で見ると確かに「\7」が消えて「HKLM\Software-Zip」になってしまっていますね。
          記事の編集画面ではちゃんと「HKLM\Software\7-Zip」になっています。
          原因が分からないので調べてみます。
          指摘されなければ気づきませんでした。ありがとうございます。

        • thtsf より:

          WordPressのページキャッシュプラグインを停止したところ、私の環境ではログアウトした状態でも正常に表示されるようになりました。
          ログインユーザーにはキャッシュを表示しない設定にしていたため、ログインした状態では正常に表示されていたようです。

  3. John Doe より:

    VisualStudio2022のみの環境では、EDCB_ALL.VS2015.slnがエラーでビルドできませんでした
    pスイッチでTargetFrameworkVersion=v4.8を指定するか.NET Framework 4.5のダウンロードが必要で、推奨はv4.8だそうです

タイトルとURLをコピーしました