﻿[ビルド]

0.Visual Studio Express 2015 for Desktop または Express 2017 for Desktop をインストールする

1."Document\EDCB_ALL.VS2015.sln"を開き、ツールバーを[Release][Win32]にしてビルド→ソリューションのビルド

（注意）
・Windows SDKのエラーが出る場合は、プロジェクト→ソリューションの再ターゲット
  で切り替える。ビルド可能なバージョンなら何でもいい
・WindowsXPで実行可能なファイルを作りたいときは、EpgTimerを除く全プロジェクトの
  構成プロパティ→プラットフォームツールセットを"v140_xp"に切り替える必要がある
  （ソリューションエクスプローラ―上でCtrl+マウス選択を駆使すればまとめて切り替えられる）
・SSE2非対応CPUで実行可能なファイルを作りたいときは、拡張命令セットを"拡張命令なし(/arch:IA32)"に切り替える

2.（EpgTimerNWが必要な場合のみ）生成された"EpgTimer.exe"を"EpgTimerNW.exe"というファイル名でコピー


[ビルド(MSYS2/Mingw-w64)] ※VisualStudioのインストールが面倒な場合お勧め

0.https://www.msys2.org/ の msys2-i686-日付.exe(32bitOS用) または msys2-x86_64-日付.exe(64bitOS用) をインストール
  スタートメニューの"MSYS2 MinGW 32-bit"(x64ビルド時は64-bit)を開き、起動した黒窓で以下を実行してmakeとgccをインストール
  $ pacman -S make mingw-w64-i686-gcc # x64ビルド時はmingw-w64-x86_64-gcc

1.つづけて以下を実行（この文書が"C:\EDCB\Document"にあると仮定）
  $ cd /c/EDCB/Document/MinGW
  $ make clean
  $ make -j2

（注意）
・EpgTimerSrv.exeをビルドする場合はLua5.2のファイルも必要。[その他]を参照
・EpgTimerAdminProxy.exeを除く実行時はlibwinpthread-1.dllも必要（おそらくlibwinpthreadの仕様でスタティックリンク
  だとハンドルリークするため）。EDCBではEpgTimerSrv.exeのフォルダ、TVTestではTVTest.exeのフォルダに置く
・EpgDataCap_Bon.exeについては、VC++でビルドされたBonDriverを使用するため、VC++でビルドされたIBonCast.dllが必要
・EpgTimer.exeについては[その他]を参照


[ビルド(VisualStudio2010)]

0.以下を順番に入れる
  Visual C++ 2010 Express
  https://go.microsoft.com/fwlink/?LinkId=190491
  Visual C# 2010 Express
  https://go.microsoft.com/fwlink/?LinkId=190492
  Visual Studio 2010 Service Pack 1（リンク切れ、たぶんWindowsUpdateで更新可能）
  https://www.microsoft.com/ja-jp/download/details.aspx?id=23691
  Windows SDK 7.1
  https://www.microsoft.com/en-us/download/details.aspx?id=8279
  # Visual C++ Compilers のチェックを外してインストールする。でないと失敗する
  # Visual C++ x86/x64 2010 Redistributable を事前にアンインストールしておく必要があるかもしれない
  Windows SDK 7.1 用 Microsoft Visual C++ 2010 Service Pack 1 コンパイラ更新プログラム
  https://www.microsoft.com/ja-jp/download/details.aspx?id=4422

1."Document\EDCB_VCALL.sln"を開き、ツールバーを[Release][Win32]にしてビルド→ソリューションのビルド

2."EpgTimer\EpgTimer.sln"を 右クリック→プログラムから開く→C# 2010 Express で開き（.NET Framework v4.0への再ターゲットのダイアログが出るときは従う）
  ツール(T)→設定→上級者設定にチェック、[Release][x86]にしてビルド

（注意）
・プロジェクトを開くのに失敗する場合は"EpgTimer\EpgTimer\EpgTimer.csproj"をメモ帳で開き
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
  となっている部分を
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  に変更する

3.（EpgTimerNWが必要な場合のみ）生成された"EpgTimer.exe"を"EpgTimerNW.exe"というファイル名でコピー


[その他]

・EpgTimer.exeをビルドするだけならVisualStudioは不要(参考:2ch_EDCB/52/224)
  必要なら.NET Framework v4.0以降をインストールして、EpgTimerフォルダでコマンドプロンプトを開いて以下を実行（またはx86build.batを実行）
  > C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe EpgTimer.sln /p:Configuration=Release /p:Platform=x86
  放置してもたぶん問題ないが、MSB3644の警告がでる場合は"EpgTimer\EpgTimer\EpgTimer.csproj"をメモ帳で開き
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
  となっている部分をインストールされている.NETのバージョンに変更するか、v4.5のTargeting Packをインストールする

・Lua5.2を組み込んだビルドもできる("EpgTimerSrv\EpgTimerSrv.sln"の[Release-withlua])
  以下のファイルが必要
  ・https://www.lua.org/ のlua-5.2.4.tar.gzのsrcフォルダの中身を"EpgTimerSrv\EpgTimerSrv\lua"に既存ファイルも含めて上書き
  ・https://github.com/brimworks/lua-zlib/releases/ のv0.5.zipのlua_zlib.cを"EpgTimerSrv\EpgTimerSrv\lua"にコピー
  ・https://zlib.net/ のzlib1211.zipの中身を"EpgTimerSrv\EpgTimerSrv\lua\zlib1"にコピー
  ビルド中にWarningが多めにでるがコーディングスタイルの問題なので気にしない

・プラットフォームツールセット:LLVM-vs2014( https://releases.llvm.org/ , ver.7.0.0以降はMarketplaceに移動の模様)に対応している
  ソースコードのUTF-8変換が必要。ConvToUTF8.batで変換できる(ConvToSJIS.batでShift_JISに逆変換)
