Skip to content

Latest commit

 

History

History
95 lines (78 loc) · 7.17 KB

find-tools.md

File metadata and controls

95 lines (78 loc) · 7.17 KB

ビルド関連ツールのパスを探す

外部ツールの実行ファイルの位置を探し、見つかれば環境変数にセットします。現在パスが通っている場所と、インストーラがデフォルトでインストールする場所が検索されます。詳細はMSBuild以外の探索手順の項目を参照してください。

外部ツールのインストール時にデフォルトパスにインストールしていない場合や別の実行ファイルを使いたい場合、実行前にパスを通しておくかCMD_7Zなどの対応する環境変数に絶対パスをセットしておいてください。

外部ツールの一覧

ツール名 環境変数 デフォルトパス ファイル名
Git for Windows CMD_GIT Git\Cmd git.exe
7-Zip CMD_7Z 7-Zip 7z
HTML Help Workshop CMD_HHC HTML Help Workshop hhc.exe
Inno Setup 5 CMD_ISCC Inno Setup 5 ISCC.exe
Cppcheck CMD_CPPCHECK cppcheck cppcheck.exe
Doxygen CMD_DOXYGEN doxygen\bin doxygen.exe
vswhere CMD_VSWHERE Microsoft Visual Studio\Installer vswhere.exe
MSBuild CMD_MSBUILD 特殊 MSBuild.exe
Locale Emulator CMD_LEPROC なし LEProc.exe
Python CMD_PYTHON なし py.exe (python.exe)
CMake CMD_CMAKE CMake\bin cmake
Ninja CMD_NINJA なし ninja

MSBuild以外の探索手順

MSBuild以外の探索手順は同一であり、7-Zipを例に説明する。

  1. CMD_7Zがセットされていればそれを使う
  2. パスが通っていればそれを使う
  3. 以下のディレクトリ内の「デフォルトパス」を順に探索し、実行ファイルが見つかればそれを使う
    • %ProgramFiles%
    • %ProgramFiles(x86)%
    • %ProgramW6432%
  4. 1~3で見つからなければCMD_7Zには何もセットしない

MSBuild

ユーザーがビルドに使用する Visual Studio のバージョンを切り替える方法

環境変数 ARG_VSVERSION の値でビルドに使用するバージョンを切り替えられる。

ARG_VSVERSION 使用される Visual Studio のバージョン
インストールされている Visual Studio の最新
15 Visual Studio 2017
16 Visual Studio 2019
2017 Visual Studio 2017
2019 Visual Studio 2019

検索ロジック

  1. ARG_VSVERSION からVC++のバージョン指定(NUM_VSVERSION)を判断する。
    1. ARG_VSVERSION 未指定の場合、15が指定されたものとみなす。
    2. ARG_VSVERSION2017の場合、15が指定されたものとみなす。
    3. ARG_VSVERSION2019の場合、16が指定されたものとみなす。
    4. ARG_VSVERSIONlatestの場合、最新バージョンを取得する。
    5. ARG_VSVERSION が上記以外の場合、%ARG_VSVERSION%が指定されたものとみなす。
  2. 指定されたバージョンのVC++がインストールされているかチェックする。
    1. vswhere -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath -version [%NUM_VSVERSION%, %NUM_VSVERSION% + 1) を実行する。
    2. 取得したパスが存在していたら、バージョン指定(NUM_VSVERSION)は正しいとみなす。
    3. 取得したパスが存在していなかったら、最新バージョンを取得する。
  3. インストール済みVC++の最新バージョンを取得する。
    1. vswhere -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationVersion -latest を実行する。
    2. 取得したバージョンが指定されたものとみなす。(NUM_VSVERSIONに代入する。)
  4. 指定されたバージョンのMsBuild.exeを検索する。
    1. -findオプションを付けてMsBuild.exeを検索する。(vswhere -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe -version [%NUM_VSVERSION%, %NUM_VSVERSION% + 1))
    2. vswhere が VS2019 以降ver の場合、MSBuild.exe が見つかるので検索終了。
    3. vswhere が VS2017 以前ver の場合、MSBuild.exe が見つからない(エラーになる)ので検索続行。
  5. VS2017 の MsBuild.exe を検索する。
    1. VS2017 のインストールパスを検索する。(vswhere -requires Microsoft.Component.MSBuild -property installationPath -version [15^,16^))
    2. VS2017 のインストールパス配下の所定位置(%Vs2017InstallRoot%\MSBuild\15.0\Bin)にMSBuild.exeが存在する場合、そのパスを MSBuild.exe のパスとみなす。 この場合、バージョン指定(NUM_VSVERSION)に15が指定されたものとみなす。

参照

python

ビルドバッチで利用する Python インタープリターの存在確認をします。 適切な Python インタープリターが見つかると、環境変数 CMD_PYTHON が定義されます。 適切な Python インタープリターが見つからない場合、 CMD_PYTHON は定義されません。 Python インタープリターはビルド要件ではないので、 Python を利用するバッチには CMD_PYTHON チェックを挟む必要があります。

  1. Python Launcher (py.exe) が存在し、 py.exe --version でバージョンが取れたら、それを使う。
  2. パスが通っているpython.exeでpython.exe --versionしてバージョンが取れたら、それを使う。

zipの処理に7zではなくPowerShellを強制する

事前に環境変数のFORCE_POWERSHELL_ZIPを1にセットすることで、7zの検索をスキップできます。 PowerShellによるzipの処理が正しく行われるかを7zがインストール済みの環境で検証する際に活用できます。build.mdも参照してください。