42

Visual Studio 2003 および 2005 (およびおそらく 2008) では、コマンド ライン ユーザーが「Visual Studio コマンド プロンプト」で実行する必要があります。このコマンド プロンプトを起動すると、C++ コンパイラ cl がコンパイル時に使用するさまざまな環境変数が設定されます。

これは常に望ましいとは限りません。たとえば、Ant 内から「cl」を実行したい場合、「Visual Studio コマンド プロンプト」内から Ant を実行する必要は避けたいと考えています。vcvars32.bat によって設定された環境は、cl が実行されるまでに失われるため (Ant 内から実行する場合)、vcvars32.bat を実行することはできません。

Visual Studio コマンド プロンプト内から実行しなくても cl を実行する簡単な方法はありますか?

4

8 に答える 8

61

コンパイラは、他のコンパイラと同じように、コマンドライン(またはmakefile)から使用できます。世話をする必要がある主なものは、INCLUDEおよびLIB環境変数、およびPATHです。cmd.exeから実行している場合は、この.batを実行するだけで環境を設定できます。

C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat

makefile、Cygwin、MinGWなどのコンパイラを使用する場合は、環境変数を手動で設定する必要があります。コンパイラがデフォルトの場所にインストールされていると仮定すると、これはVisualStudio2008コンパイラと最新のWindowsSDKで機能するはずです。

PATHに追加:

  • C:\ Program Files \ Microsoft SDKs \ Windows \ v6.1 \ Bin
  • C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ Bin
  • C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE

INCLUDEに追加:

  • C:\ Program Files \ Microsoft SDKs \ Windows \ v6.1 \ Include
  • C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ include
  • C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ atlmfc \ include

LIBに追加:

  • C:\ Program Files \ Microsoft SDKs \ Windows \ v6.1 \ Lib
  • C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ lib

これらは最低限ですが、基本的なことには十分なはずです。vcvarsall.batスクリプトを調べて、さらに何を設定したいかを確認してください。

于 2008-09-17T15:29:16.503 に答える
24

独自のバッチ ファイル (clenv.bat など) を作成し、cl の代わりにそれを呼び出します。

@echo off
:: Load compilation environment
call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
:: Invoke compiler with any options passed to this batch file
"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe" %*

clenv.bat は、最初に必要な環境変数を最初にロードすることを除いて、cl.exe と同じように呼び出すことができるようになりました。

于 2008-09-17T20:04:38.073 に答える
6

変数を自分で設定するバッチファイルを実行するだけです。VS08 では、次の場所にあります。

C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
于 2008-09-17T15:24:06.953 に答える
2

vcvars32 または vsvars32 バッチ ファイルが行うことはロケット科学ではありません。PATH、INCLUDE、LIB、および場合によっては LIBPATH 環境変数を、特定のコンパイラ バージョンの適切なデフォルトに設定するだけです。

あなたがしなければならないことは、Ant や makefile に対してこれらが適切に設定されていることを確認することだけです (それらを呼び出す前に、またはそれらの中で)。

INCLUDE および LIB/LIBPATH の場合、これらの項目を環境変数に設定する代わりに、これらの設定を明示的なパラメーターとしてコマンド ラインに渡すことができます。

于 2008-09-17T17:36:56.663 に答える
1

Visual Studio コマンド プロンプトによって実行される vcvarsall.bat バッチ ファイルは、単にシステム環境変数とパスをきれいに維持しようとしています (Visual Studio の複数のバージョンがある場合は重要です)。

セットアップを 1 つのバージョンに制限し、長いパスと一連の環境変数を保持することに満足している場合は、これらの設定を (手動で) システム環境変数 (マイ コンピューター|プロパティ --- または Win-Pause/Break) に転送します。

私はこれに反対することをお勧めします!

于 2008-09-17T15:56:42.863 に答える
1

コツは、常に正しい vcvars バッチ ファイルを使用することです。インストールされている VisualStudio のバージョンが 1 つだけであれば、大きな問題はありません。私のように複数のバージョンを扱っている場合、MSVC++ 15 vcvars ファイルでセットアップされたコンソールで MSVC++ 14 ビルドを実行するのは非常に簡単になります。機能する場合と機能しない場合がありますが、得られるものは、VisualStudio 内から構築するものとは異なります。

選択したコンパイラから適切な vcvars ファイルを取得し、常にツールの呼び出しに対して内部的に環境を設定することで、 terpでこの問題に対処しました。このようにして、使用しているコンパイラに適した vcvars ファイルを常に使用できます。

繰り返しますが、vcvars ファイルの機能を手動で複製しようとしないことを強くお勧めします。何かを見逃したり、実際には望んでいたこととは少し異なることをしているのに、機能しているように見えるほど適切に取得することは避けられません。

于 2009-07-13T18:55:44.397 に答える
0

でVisualStudioコマンドプロンプトのVisualStudioコマンドラインを開いた私のバージョン。ライブラリ/プロジェクトを構築し、結果のDLLファイルを使用していくつかの追加手順を実行するために内部的に使用されます。

Compile and execute other steps.cmdこれらの行をファイルなどにコピーします。

@echo off

REM Load Visual Studio's build tools
call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

REM Choose what you want to do, 1 or 2 by (un)commenting

REM     1. Add your cl.exe (or msbuild.exe or other) commands here
REM msbuild.exe MyProject.csproj
REM cl.exe
REM custom-step.exe  %*
REM pause

REM     2. Open a normal interactive system command shell with all variables loaded
%comspec% /k

このバージョンのスクリプトでは、その後、インタラクティブなコマンドラインモードを「維持」します。REM %comspec% /k非対話型の目的でのみスクリプトを使用するようにコメントします。

于 2012-06-15T15:27:09.347 に答える