7

アプリケーションの異なるバージョンをビルドする同じ bash スクリプト (msys) 内から vcvars32.bat と vcvars64.bat を呼び出す必要があります。

問題は、cmd.exe コマンドでバッチ ファイルを呼び出すことができたとしても、Visual Studio の変数が明らかに設定されていないことです。

同じスクリプトで両方を順番に呼び出す必要があるため、bash スクリプトを呼び出す外部バッチ ファイル (msys.bat など) から vcvars を呼び出すことはできません。

では、実行中に bash スクリプトで変数を適切に設定するために vcvars を呼び出す方法はありますか?

4

3 に答える 3

1

これを解決する 1 つの方法は、コマンドを bash 側にエクスポートするのではなく、vcvars 環境内から実行することです。それが私たちのプロジェクトで選んだアプローチです。

主な問題はvcvars*.bat、環境内で実行するコマンドを受け入れないことです。そのため、cmd を使用したちょっとした工夫が必要です。vcvars_env_run.shそこで、任意の引数を受け取り、呼び出された cmd.exe にそれらを転送するという単純な Bash スクリプトを思いつきましたvcvars64.bat。作業の大部分は、引用符で囲まれた引数、および &&、||、リターン コードなどを適切に転送する方法を考え出すことです。

スクリプトといくつかの例をhttps://github.com/kromain/wsl-utilsにアップロードしました

vcvars32.batとを切り替えるには、少し微調整する必要があるかもしれませんが、vcvars64.bat目的に役立つことを願っています。

于 2019-11-12T16:15:31.783 に答える
-1

あなたがする必要があるのは、バッチスクリプトでコマンド「call」を使用することです。したがって、次のようになります。

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
echo DevEnvDir set to: %DevEnvDir%

「呼び出し」を使用しない場合、スクリプトは vcvars32.bat の終了後に終了し、他のコマンドは実行されません。

于 2013-03-14T15:02:38.743 に答える