ページへ戻る
印刷
技術系備忘録/C++/VisualStudio/MSBuild.exeのパスを解決して実行
をテンプレートにして作成 ::
シンクリッジ
xpwiki
:技術系備忘録/C++/VisualStudio/MSBuild.exeのパスを解決して実行 をテンプレートにして作成
開始行:
開発の現場では作業の敷居を上げないために、シンプルな開発...
外部ライブラリであっても、このサイトからダウンロードして...
Clone(Checkout)した後に、このスクリプトだけ叩けばOK!く...
昨今は色々な言語でパッケージ管理ツール的なものが一般的に...
そこで必要になるのが VC プロジェクトをコマンドラインでビ...
がしかし困ったことに MSBuild.exe の配置場所(パス)って固定...
で、それを解決する為に(かどうかはわかりませんが) Visual...
なので、vswhere.exe を叩いておくようにすれば VisualStudio...
さすがに、「このプロジェクトでは VisualStudio2017 を使う...
ネット上の情報をかき集めた知識でこさえてみました。感謝で...
#contents
* 使い方
#prettify{{
> MSBuild.bat c:\app\app.vcxproj
}}
こんな感じで使うと、インストールされている最新の MSBuild....
VisualStudio2019、2017、2015 の環境までは確認しています。
* MSBuild.bat
#prettify{{
:: MSBuild.exe %*
@echo off
setlocal
:: cd /d %~dp0
set PF32=%ProgramFiles(x86)%
if not exist "%PF32%" set PF32=%ProgramFiles%
set VsWherePath="%PF32%\Microsoft Visual Studio\Installer...
:: vs2019 or later
for /f "usebackq tokens=*" %%i in (`%VsWherePath% -latest...
if exist "%%i" (
set MSBuildPath="%%i"
goto :run
)
)
:: vs2017 or earlier
for /f "usebackq tokens=1* delims=: " %%i in (`%VsWherePa...
if /i "%%i"=="installationPath" (
if exist "%%j\MSBuild\15.0\Bin\MSBuild.exe" (
set MSBuildPath="%%j\MSBuild\15.0\Bin\MSBuild.exe"
goto :run
)
if exist "%%j\MSBuild\14.0\Bin\MSBuild.exe" (
set MSBuildPath="%%j\MSBuild\14.0\Bin\MSBuild.exe"
goto :run
)
if exist "%%j\MSBuild\12.0\Bin\MSBuild.exe" (
set MSBuildPath="%%j\MSBuild\12.0\Bin\MSBuild.exe"
goto :run
)
)
)
:run
if not exist %MSBuildPath% (
echo "MSBuild.exe not find"
exit /b 1
)
echo on
%MSBuildPath% %*
}}
*** 備考
VisualStudio2019 の vswhere.exe には -find っていうオプシ...
が、当然 VisualStudio2019 が未インストールの環境では、-fi...
で、エラーが返ってきてもファイルの有無チェックで弾くこと...
あんまりスマートじゃないやり方な気がしますが、他に妙案が...
もしもっと良い方法があればご助言頂けると幸いです。
終了行:
開発の現場では作業の敷居を上げないために、シンプルな開発...
外部ライブラリであっても、このサイトからダウンロードして...
Clone(Checkout)した後に、このスクリプトだけ叩けばOK!く...
昨今は色々な言語でパッケージ管理ツール的なものが一般的に...
そこで必要になるのが VC プロジェクトをコマンドラインでビ...
がしかし困ったことに MSBuild.exe の配置場所(パス)って固定...
で、それを解決する為に(かどうかはわかりませんが) Visual...
なので、vswhere.exe を叩いておくようにすれば VisualStudio...
さすがに、「このプロジェクトでは VisualStudio2017 を使う...
ネット上の情報をかき集めた知識でこさえてみました。感謝で...
#contents
* 使い方
#prettify{{
> MSBuild.bat c:\app\app.vcxproj
}}
こんな感じで使うと、インストールされている最新の MSBuild....
VisualStudio2019、2017、2015 の環境までは確認しています。
* MSBuild.bat
#prettify{{
:: MSBuild.exe %*
@echo off
setlocal
:: cd /d %~dp0
set PF32=%ProgramFiles(x86)%
if not exist "%PF32%" set PF32=%ProgramFiles%
set VsWherePath="%PF32%\Microsoft Visual Studio\Installer...
:: vs2019 or later
for /f "usebackq tokens=*" %%i in (`%VsWherePath% -latest...
if exist "%%i" (
set MSBuildPath="%%i"
goto :run
)
)
:: vs2017 or earlier
for /f "usebackq tokens=1* delims=: " %%i in (`%VsWherePa...
if /i "%%i"=="installationPath" (
if exist "%%j\MSBuild\15.0\Bin\MSBuild.exe" (
set MSBuildPath="%%j\MSBuild\15.0\Bin\MSBuild.exe"
goto :run
)
if exist "%%j\MSBuild\14.0\Bin\MSBuild.exe" (
set MSBuildPath="%%j\MSBuild\14.0\Bin\MSBuild.exe"
goto :run
)
if exist "%%j\MSBuild\12.0\Bin\MSBuild.exe" (
set MSBuildPath="%%j\MSBuild\12.0\Bin\MSBuild.exe"
goto :run
)
)
)
:run
if not exist %MSBuildPath% (
echo "MSBuild.exe not find"
exit /b 1
)
echo on
%MSBuildPath% %*
}}
*** 備考
VisualStudio2019 の vswhere.exe には -find っていうオプシ...
が、当然 VisualStudio2019 が未インストールの環境では、-fi...
で、エラーが返ってきてもファイルの有無チェックで弾くこと...
あんまりスマートじゃないやり方な気がしますが、他に妙案が...
もしもっと良い方法があればご助言頂けると幸いです。
ページ名: