ソースをダウンロードしてビルド、アーカイブを作成するバッチファイルです。
必要
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=」にフォルダパスを書きます。
コメント
バッチコンパイルする場合はWindows10のSDKが必要になるようです。VS2019インストール時に特定SDKをあわせてインストールすることで回避できました。
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には互換性がないというだけなのでしょうか?
このサイトに「B25Decoder.dllをビルドするバッチファイル」というページがあったのですね。
このバッチファイルを使ってみたのですが、やはりこのままではビルドできませんでした。
pスイッチにWindowsTargetPlatformVersion=10.0を追加したらビルドできました。
5chに以下の書き込みがあったので、10.0.17134.0以降は互換性があるということなのかもしれません。
https://mevius.5ch.net/test/read.cgi/avi/1518705444/670
ただ自信がないので、WindowsTargetPlatformVersionの設定を追加しておきました。
B25Decoder.dllのバッチにも追加しておきました。
WindowsTargetPlatformVersionはフルバージョンを指定するのではなく「10.0」を指定すると、インストールされている中の最新バージョンを使用してビルドするそうです。
10.0.17763.0はVS2017用です。
その仕様はVS2019からだったと思います。
B25Decoder.dllのバッチによるビルドが上手くいかなくて悩んでいました。
再ターゲットすれば問題なくビルドできるので、バッチによるプロジェクトの再ターゲット方法をネット検索したのですが見つかりませんでした。
そこでMSBuildのオプションでPlatformToolsetを指定できるならWindowsTargetPlatformVersionも指定できるのではないかと思い、適当に「WindowsTargetPlatformVersion=10.0.19041.0」と追加してやったらビルドできてしまったのでちょっと驚きました。
この2つのプロパティを指定してビルドすれば、再ターゲットしてビルドした場合と同じと考えれば良いですよね?
はい、同じだと思います。
はじめまして
サイトを拝見して以来、いろいろと参考にさせていただいています。
(もっとも、プログラミングなどの知識もないので、もっぱら、「マネ」させていただいているだけですが)
昨日、久しぶりにTvTestをアップデートしようと、こちらからコピペしたバッチファイルを動かしたのですが、何が変更になったのか、途中でエラーが出て終わってしまいます。
1ヶ月ほど前までは何の問題もなかったのですが。。。。。
何か原因があれば、教えていただけないでしょうか。。。。。
「TVTest_All.sln」が「TVTest.sln」に変更になったためにエラーになっていたようです。バッチファイルを修正しました。
それとTVTest.chmのビルドにMFCが必要になったのでこちらの記事を参考にインストールしてください。
ありがとうございます。
無事にビルドできました。
>>「TVTest_All.sln」が「TVTest.sln」に変更になったため
いくら素人でも、ここを気づかずにお手数をおかけしました!!
改めて、ありがとうございます。
今後も宜しくお願いいたします。(_ _)
いつも使わせてもらってます
OSの入れ替えの為VS2022にしてみたら使えなくなってしまいました
どこを修正すれば使える様になりますか?
MSBuildの行(全部で3行)の最後に
;PlatformToolset=v143
を追加したらどうでしょうか?例えば以下のようにします。
追加したら無事出来ましたm(_ _)m
ありがとうございました