Home
Blog
Company
TechMemo
Contact
メニュー
スタッフブログ
会社案内
技術系備忘録
お問い合わせ
旧ホームページ
ブログ更新履歴
2024/03/11
rlib-MML 機能追加しました
2023/12/16
rlib-MML アプリ ver1.0.6 公開しました
2023/11/13
rlib-MML 機能追加しました
2023/01/06
rlib-MML アプリ ver1.0.5 公開しました
2021/12/01
rlib-MML アプリ 更新しました
コンテンツ更新履歴
最新の30件
2022-10-24
技術系備忘録/Windows/接続されているモニタ以上の解像度でデスクトップ表示
2021-10-14
技術系備忘録/C++/小技/無名関数の再帰をローテクで
2021-08-10
技術系備忘録/C++/小技
2021-08-08
技術系備忘録/C++/小技/型で条件分岐
2021-06-10
技術系備忘録/Docker/サーバー死活監視スクリプト
2021-03-29
技術系備忘録/C++/Boost/boost.formatを使った文字列フォーマット。printf系関数を置き換え
2020-10-21
技術系備忘録/VMware/Ubuntu8.10にVMwareServer1.0をインストール
2020-10-14
技術系備忘録/VMware
技術系備忘録/VMware/CentOS7にVMwarePlayer12をインストール
2020-06-03
技術系備忘録/TypeScript/二分探索(binary search)
2020-06-01
技術系備忘録/Docker/SSLアクセラレータ&リバースプロキシ
2019-11-08
技術系備忘録/C++/OpenSSL/ビルド方法
2019-11-04
技術系備忘録/C++/VisualStudio/MSBuild.exeのパスを解決して実行
2019-10-02
MenuBar
2019-09-05
技術系備忘録/Docker
2019-09-04
技術系備忘録/Docker/LAMP環境構築
2019-07-16
会社案内/品質管理方針
2019-04-18
技術系備忘録/AWS/SoftEtherを使ってVPN接続
2019-02-18
技術系備忘録/C++/小技/std.set map系の比較関数の新機能
2018-05-25
技術系備忘録/データベース
技術系備忘録/データベース/SQLite
技術系備忘録/データベース/SQLite/WHERE IN で複数指定するクエリ
2018-05-20
会社案内/求人情報
2018-01-11
技術系備忘録/AWS/EC2 AmazonLinuxにSWAPを設定
技術系備忘録/AWS
2017-11-21
技術系備忘録/C++/Boost/インストール手順
2017-10-25
技術系備忘録/C++/Boost
技術系備忘録/C++/VisualStudio
技術系備忘録/C++/Boost/boost.asioコルーチン内で表コンテキストの処理を行う
2017-10-17
技術系備忘録/C++/VisualStudio/デバッガでstd.stringをUTF-8で表示
リンク
rlib-MML デモページ
MML (Music Macro Language) をコンパイルし、再生や標準MIDIファイル出力をブラウザ上で行える形にまとめています。
Magome
クラウドベースのMIDIシーケンサ
音楽制作に興味のある方を対象に、スタンドアロンでも使え、ネットならではの面白さも兼ね備えた音楽制作アプリの提供を目指しています。
twitter
Tweets by thinkridge
(有)シンクリッジは 技術者 を募集しております。
|
一覧
検索
最新
ヘルプ
ページへ戻る
履歴
印刷
技術系備忘録/C++/VisualStudio/MSBuild.exeのパスを解決して実行
のソース
xpwiki
:
技術系備忘録
/
C++
/
VisualStudio
/
MSBuild.exeのパスを解決して実行
のソース
差分
を表示
技術系備忘録/C++/VisualStudio/MSBuild.exeのパスを解決して実行
へ行く。
開発の現場では作業の敷居を上げないために、シンプルな開発環境構築手順ってとても大事だと思います。 外部ライブラリであっても、このサイトからダウンロードしてビルドして出来上がったファイルはココに置いてパスを通して・・・みたいなことを各開発者に強いるのはなるべく避けたい。 Clone(Checkout)した後に、このスクリプトだけ叩けばOK!くらいまでシンプルだと理想だなと思います。 昨今は色々な言語でパッケージ管理ツール的なものが一般的に使われてると思うのですが、C++ 界隈ではソースをダウンロードして自分で手作業でビルドするものが多々あり、windows の場合は VC のプロジェクトファイルをビルドすべしっていうものがけっこうあります。 そこで必要になるのが VC プロジェクトをコマンドラインでビルドするために必要な MSBuild.exe。 がしかし困ったことに MSBuild.exe の配置場所(パス)って固定ではありません。環境事にバラバラです。 で、それを解決する為に(かどうかはわかりませんが) VisualStudio では vswhere.exe っていうのがあり、それを叩けば MSBuild.exe のパスが取れるよ。というような記事を目にしたことがあります。 なので、vswhere.exe を叩いておくようにすれば VisualStudio をバージョンアップしてもちゃんと動くんだろうからコレを使っておこう。と安心していたんですが、VisualStudio2019 をインストールしたら、MSBuild.exe のパスが取れなくなってしまいました。 さすがに、「このプロジェクトでは VisualStudio2017 を使うので 2019 はインストールするべからず!」みたいな開発環境ルールは避けたいので、VisualStudio2019 がインストールされている環境でも期待通り MSBuild.exe を叩ける bat を用意したので備忘録兼ねて載せておきます。 ネット上の情報をかき集めた知識でこさえてみました。感謝です。 #contents * 使い方 [#h583eb2d] #prettify{{ > MSBuild.bat c:\app\app.vcxproj }} こんな感じで使うと、インストールされている最新の MSBuild.exe でビルドを行います。 VisualStudio2019、2017、2015 の環境までは確認しています。 * MSBuild.bat [#tbfcdbcc] #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\vswhere.exe" :: vs2019 or later for /f "usebackq tokens=*" %%i in (`%VsWherePath% -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe`) do ( if exist "%%i" ( set MSBuildPath="%%i" goto :run ) ) :: vs2017 or earlier for /f "usebackq tokens=1* delims=: " %%i in (`%VsWherePath% -latest -requires Microsoft.Component.MSBuild`) do ( 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% %* }} *** 備考 [#ac84f756] VisualStudio2019 の vswhere.exe には -find っていうオプションが追加されたようで、それを使うのが王道らしいので、それを使っています。 が、当然 VisualStudio2019 が未インストールの環境では、-find を指定してもエラーになります。 で、エラーが返ってきてもファイルの有無チェックで弾くことで VisualStudio2019 未満向けの処理に流れるっていう寸法です。 あんまりスマートじゃないやり方な気がしますが、他に妙案が思いつかないです・・。 もしもっと良い方法があればご助言頂けると幸いです。
技術系備忘録/C++/VisualStudio/MSBuild.exeのパスを解決して実行 のバックアップソース(No. All)
現: 2019-11-04 (月) 21:05:15
takatsuka
ぺージ情報
ぺージ名 :
技術系備忘録/C++/VisualStudio/MSBuild.exeのパスを解決して実行
ページ別名 :
未設定
ページ作成 :
takatsuka
閲覧可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
編集可
グループ :
なし
ユーザー :
なし
Counter: 8055, today: 3, yesterday: 4