5

VisualC++を使用していくつかのビルドを実行するためのバッチファイルを作成しています。スクリプトの最後でvsvars32.bat/vcvarsXX.batの変更を「元に戻す」ので、スクリプトを実行する前から環境を変更しません。

例1-vsvars32.batを使用する

call %VS100COMNTOOLS%vsvars32.bat
devenv myProject.sln /Build "Debug|Win32"
:: Now undo vsvars32.bat

例2-vcvars32.batとvcvars64.batを使用する

<path to VC bin>vcvars32.bat
:: cmd line build calls for 32 bit application
:: Now undo vcvars32.bat

<path to VC bin>amd64\vcvars64.bat
:: cmd line build calls for 64 bit application
:: Now undo vcvars64.bat

助言がありますか?

4

2 に答える 2

11

解決策は単純です-SETLOCALとENDLOCALを組み合わせます。HELP SETLOCALまたはを入力HELP ENDLOCALして、使用法の詳細を取得します。

例1:

setlocal
call %VS100COMNTOOLS%vsvars32.bat
devenv myProject.sln /Build "Debug|Win32"
endlocal

例2:

setlocal
<path to VC bin>vcvars32.bat
:: cmd line build calls for 32 bit application
endlocal

setlocal    
<path to VC bin>amd64\vcvars64.bat
:: cmd line build calls for 64 bit application
endlocal
于 2013-02-20T00:54:10.730 に答える
1

build.batが次のように呼び出されると、より簡単になります。

cmd.exe /c build.bat

この意志:

  1. 現在の環境のコピーを使用して子プロセスを作成します。
  2. この環境を変更します。
  3. 変更された子環境でビルドを実行します。
  4. プロセス終了時に子環境を破棄します。

したがって、現在の環境では何も変更されず、クリーンアップは必要ありません。

于 2013-11-26T13:12:22.280 に答える