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

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

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

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

必要

Visual Studio

2019以降でビルドできます。

こちらの記事を参考にインストールしてください。

2022で動作確認しています。

Git for Windows

公式サイトの「Download」をクリックします。

インストールで特に変更するところはありません。

7-Zip

公式サイトからダウンロードしてインストールします。

バッチファイル

拡張子を.batにして保存します。

@echo off
setlocal
cd /d %~dp0

rem デフォルト設定
set ARCH=x86
set RUNTIME=dynamic
set TARGET=Build
set CONFIG=Release
set REPO_DEL=False
set REPO_DIR=TVTest
set OUT_DIR=package

rem 引数の取得
for %%i in (%*) do (
    if /i "%%i" == "help"    goto Help
    if /i "%%i" == "x86"     set ARCH=x86
    if /i "%%i" == "x64"     set ARCH=x64
    if /i "%%i" == "Both"    set ARCH=Both
    if /i "%%i" == "dynamic" set RUNTIME=dynamic
    if /i "%%i" == "MD"      set RUNTIME=dynamic
    if /i "%%i" == "static"  set RUNTIME=static
    if /i "%%i" == "MT"      set RUNTIME=static
    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 /i "%%i" == "del"     set REPO_DEL=True
)

if /i "%REPO_DEL%" == "True" (
    if exist "%REPO_DIR%" rd /s /q "%REPO_DIR%"
)
rem ソースのダウンロード
if not exist "%REPO_DIR%" (
    git clone -b develop --recursive https://github.com/DBCTRADO/TVTest.git "%REPO_DIR%"
)
cd /d "%REPO_DIR%"

rem Visual Studioのインストールフォルダの検索
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
)

rem 開発者コマンドプロンプトの起動
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 0

:Build
set ARCH=%1

if /i "%ARCH%" == "x86" (
    set PLATFORM=Win32
) else (
    set PLATFORM=%ARCH%
)

if /i "%CONFIG%" == "Debug" set RUNTIME=

set TVTEST_CONFIG=%CONFIG%
if /i "%RUNTIME%" == "dynamic" set TVTEST_CONFIG=%TVTEST_CONFIG%_MD

set PLUGIN_CONFIG=%CONFIG%
if /i "%RUNTIME%" == "static" set PLUGIN_CONFIG=%PLUGIN_CONFIG%_static

rem ビルド
pushd src\LibISDB\Projects
MSBuild LibISDB.sln /nologo /m /t:%TARGET% /p:Configuration=%TVTEST_CONFIG%;Platform=%ARCH%
popd
if errorlevel 1 exit /b 1

pushd src
MSBuild TVTest.sln /nologo /m /t:%TARGET% /p:Configuration=%TVTEST_CONFIG%;Platform=%PLATFORM%
popd
if errorlevel 1 exit /b 1

pushd sdk\Samples
MSBuild Samples.sln /nologo /m /t:%TARGET% /p:Configuration=%PLUGIN_CONFIG%;Platform=%PLATFORM%
popd
if errorlevel 1 exit /b 1

if /i "%TARGET%" == "Clean" exit /b 0

rem アーカイブの作成
package.sh -a %ARCH% -c "%RUNTIME%" -t %CONFIG% -l all -o "%OUT_DIR%"

exit /b

:Help
echo %~nx0 [x86^|x64^|Both] [dynamic^|static] [Build^|Rebuild^|Clean] [Debug^|Release] [del]

exit /b

使い方

コマンドプロンプトでバッチファイルを実行するときに引数を指定します。

TVTest.bat [x86|x64|Both] [dynamic|static] [Build|Rebuild|Clean] [Debug|Release] [del]

上記はhelpを指定すると表示されます。

引数のデフォルト値は以下です。

TVTest.bat x86 dynamic Build Release

x86は32bit版、x64は64bit版、Bothは32bit版と64bit版の両方です。

dynamicは動的リンク、staticは静的リンクです。
dynamicの代わりにMD、staticの代わりにMTを指定することもできます。

delはソースを削除します。ダウンロードし直す場合に指定します。

バッチファイルと同じフォルダにある TVTest\package に出力されます。

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

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

コメント

  1. 通りすがりの人 より:

    バッチコンパイルする場合はWindows10のSDKが必要になるようです。VS2019インストール時に特定SDKをあわせてインストールすることで回避できました。

  2. John Doe より:

    TVTestをバッチでビルドするときは、MSBuildのスイッチに
    /p:WindowsTargetPlatformVersion=10.0
    を指定しなくても最新バージョンのWindows SDKを使用してビルドしてくれるのですか?
    ウチのvisualstudioにインストールされているWindows SDKは10.0.19041.0なのにちゃんとビルドしてくれるので不思議に思ったのですが。
    ちなみにaribb25はプロジェクトで指定しているSDKバージョンが10.0.16299.0で、上記スイッチを指定しないとバッチ処理でビルドできません。
    単にSDKバージョン10.0.19041.0は10.0.17763.0に互換性があり、10.0.16299.0には互換性がないというだけなのでしょうか?

    • John Doe より:

      このサイトに「B25Decoder.dllをビルドするバッチファイル」というページがあったのですね。
      このバッチファイルを使ってみたのですが、やはりこのままではビルドできませんでした。
      pスイッチにWindowsTargetPlatformVersion=10.0を追加したらビルドできました。

      • thtsf より:

        5chに以下の書き込みがあったので、10.0.17134.0以降は互換性があるということなのかもしれません。
        https://mevius.5ch.net/test/read.cgi/avi/1518705444/670

        ただ自信がないので、WindowsTargetPlatformVersionの設定を追加しておきました。
        B25Decoder.dllのバッチにも追加しておきました。

        • John Doe より:

          WindowsTargetPlatformVersionはフルバージョンを指定するのではなく「10.0」を指定すると、インストールされている中の最新バージョンを使用してビルドするそうです。

          • thtsf より:

            10.0.17763.0はVS2017用です。
            その仕様はVS2019からだったと思います。

          • John Doe より:

            B25Decoder.dllのバッチによるビルドが上手くいかなくて悩んでいました。
            再ターゲットすれば問題なくビルドできるので、バッチによるプロジェクトの再ターゲット方法をネット検索したのですが見つかりませんでした。
            そこでMSBuildのオプションでPlatformToolsetを指定できるならWindowsTargetPlatformVersionも指定できるのではないかと思い、適当に「WindowsTargetPlatformVersion=10.0.19041.0」と追加してやったらビルドできてしまったのでちょっと驚きました。
            この2つのプロパティを指定してビルドすれば、再ターゲットしてビルドした場合と同じと考えれば良いですよね?

          • thtsf より:

            はい、同じだと思います。

  3. がぼちゃん より:

    はじめまして
    サイトを拝見して以来、いろいろと参考にさせていただいています。
    (もっとも、プログラミングなどの知識もないので、もっぱら、「マネ」させていただいているだけですが)

    昨日、久しぶりにTvTestをアップデートしようと、こちらからコピペしたバッチファイルを動かしたのですが、何が変更になったのか、途中でエラーが出て終わってしまいます。
    1ヶ月ほど前までは何の問題もなかったのですが。。。。。

    何か原因があれば、教えていただけないでしょうか。。。。。

    • thtsf より:

      「TVTest_All.sln」が「TVTest.sln」に変更になったためにエラーになっていたようです。バッチファイルを修正しました。
      それとTVTest.chmのビルドにMFCが必要になったのでこちらの記事を参考にインストールしてください。

      • がぼちゃん より:

        ありがとうございます。
        無事にビルドできました。
        >>「TVTest_All.sln」が「TVTest.sln」に変更になったため
        いくら素人でも、ここを気づかずにお手数をおかけしました!!
        改めて、ありがとうございます。
        今後も宜しくお願いいたします。(_ _)

  4. mako より:

    いつも使わせてもらってます
    OSの入れ替えの為VS2022にしてみたら使えなくなってしまいました

    どこを修正すれば使える様になりますか?

    • thtsf より:

      MSBuildの行(全部で3行)の最後に;PlatformToolset=v143を追加したらどうでしょうか?
      例えば以下のようにします。

      MSBuild LibISDB.sln /nologo /m /t:%TARGET% /p:Configuration=%SRC_CONFIG%;Platform=%ARCH%;PlatformToolset=v143
  5. mako より:

    追加したら無事出来ましたm(_ _)m
    ありがとうございました

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