外部ツールの実行ファイルの位置を探し、見つかれば環境変数にセットします。現在パスが通っている場所と、インストーラがデフォルトでインストールする場所が検索されます。詳細は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以外の探索手順は同一であり、7-Zipを例に説明する。
- CMD_7Zがセットされていればそれを使う
- パスが通っていればそれを使う
- 以下のディレクトリ内の「デフォルトパス」を順に探索し、実行ファイルが見つかればそれを使う
- %ProgramFiles%
- %ProgramFiles(x86)%
- %ProgramW6432%
- 1~3で見つからなければCMD_7Zには何もセットしない
環境変数 ARG_VSVERSION
の値でビルドに使用するバージョンを切り替えられる。
ARG_VSVERSION | 使用される Visual Studio のバージョン |
---|---|
空 | インストールされている Visual Studio の最新 |
15 | Visual Studio 2017 |
16 | Visual Studio 2019 |
2017 | Visual Studio 2017 |
2019 | Visual Studio 2019 |
ARG_VSVERSION
からVC++
のバージョン指定(NUM_VSVERSION
)を判断する。ARG_VSVERSION
未指定の場合、15
が指定されたものとみなす。ARG_VSVERSION
が2017
の場合、15
が指定されたものとみなす。ARG_VSVERSION
が2019
の場合、16
が指定されたものとみなす。ARG_VSVERSION
がlatest
の場合、最新バージョンを取得する。ARG_VSVERSION
が上記以外の場合、%ARG_VSVERSION%
が指定されたものとみなす。
- 指定されたバージョンのVC++がインストールされているかチェックする。
vswhere -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath -version [%NUM_VSVERSION%, %NUM_VSVERSION% + 1)
を実行する。- 取得したパスが存在していたら、バージョン指定(
NUM_VSVERSION
)は正しいとみなす。 - 取得したパスが存在していなかったら、最新バージョンを取得する。
- インストール済み
VC++
の最新バージョンを取得する。vswhere -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationVersion -latest
を実行する。- 取得したバージョンが指定されたものとみなす。(
NUM_VSVERSION
に代入する。)
- 指定されたバージョンの
MsBuild.exe
を検索する。-find
オプションを付けてMsBuild.exe
を検索する。(vswhere -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe -version [%NUM_VSVERSION%, %NUM_VSVERSION% + 1)
)vswhere
が VS2019 以降ver の場合、MSBuild.exe
が見つかるので検索終了。vswhere
が VS2017 以前ver の場合、MSBuild.exe
が見つからない(エラーになる)ので検索続行。
- VS2017 の
MsBuild.exe
を検索する。- VS2017 のインストールパスを検索する。(
vswhere -requires Microsoft.Component.MSBuild -property installationPath -version [15^,16^)
) - VS2017 のインストールパス配下の所定位置(
%Vs2017InstallRoot%\MSBuild\15.0\Bin
)にMSBuild.exe
が存在する場合、そのパスをMSBuild.exe
のパスとみなす。 この場合、バージョン指定(NUM_VSVERSION
)に15
が指定されたものとみなす。
- VS2017 のインストールパスを検索する。(
ビルドバッチで利用する Python インタープリターの存在確認をします。
適切な Python インタープリターが見つかると、環境変数 CMD_PYTHON
が定義されます。
適切な Python インタープリターが見つからない場合、 CMD_PYTHON
は定義されません。
Python インタープリターはビルド要件ではないので、 Python を利用するバッチには CMD_PYTHON
チェックを挟む必要があります。
- Python Launcher (py.exe) が存在し、
py.exe --version
でバージョンが取れたら、それを使う。 - パスが通っているpython.exeで
python.exe --version
してバージョンが取れたら、それを使う。
事前に環境変数のFORCE_POWERSHELL_ZIP
を1にセットすることで、7zの検索をスキップできます。
PowerShellによるzipの処理が正しく行われるかを7zがインストール済みの環境で検証する際に活用できます。build.mdも参照してください。