Frage

Visual Studio 2003 und 2005 (und vielleicht auch 2008 für alles, was ich weiß) erfordern die Befehlszeile Benutzer in der ‚Visual Studio-Eingabeaufforderung‘ laufen. Beim Start diese Eingabeaufforderung es verschiedene Umgebungsvariablen setzt, dass die C ++ Compiler, cl, verwendet beim Kompilieren.

Dies ist nicht immer wünschenswert. Wenn zum Beispiel, ich will aus Ant ‚cl‘ laufen, würde Ich mag, um zu vermeiden Ant aus der ‚Visual Studio-Eingabeaufforderung‘ laufen. vcvars32.bat Laufen ist keine Option, da die von vcvars32.bat gesetzt Umwelt würde durch die Zeit cl ausgeführt wurde verloren (wenn aus Ant ausgeführt wird).

Gibt es eine einfache Möglichkeit, cl zu laufen, ohne dass innerhalb der Visual Studio-Eingabeaufforderung ausgeführt werden?

War es hilfreich?

Lösung

Die Compiler können von der Kommandozeile (oder Makefiles) verwendet werden, genauso wie alle anderen Compilern. Die wichtigsten Dinge, die Sie kümmern sich um die INCLUDE und LIB-Umgebungsvariablen und PATH sind. Wenn Sie von cmd.exe ausführen, können Sie sich nur .bat ausführen, um die Umwelt zu setzen:

C: \ Programme \ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat

Wenn Sie versuchen, die Compiler von einer Make-Datei zu verwenden, Cygwin, MinGW, oder so ähnlich, dass Sie müssen manuell die Umgebungsvariablen setzen. Vorausgesetzt, dass der Compiler in dem Standardverzeichnis installiert ist, sollte dies für die Visual Studio 2008-Compiler arbeiten und die neuesten Windows SDK:

In dem PFAD:

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

In den ENTHALTEN:

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

In der LIB:

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

Dies sind das absolute Minimum, sollen aber für grundlegenden Dinge genug sein. Studieren Sie die vcvarsall.bat Skript zu sehen, was mehr Sie einstellen möchten.

Andere Tipps

Erstellen Sie Ihre eigene Batch-Datei (sagen clenv.bat), und ruft, dass anstelle von 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 kann nun wie cl.exe geltend gemacht werden, es sei denn, dass es zunächst zunächst die dafür benötigten Umgebungsvariablen laden.

Sie können einfach die Batchdatei, die die Variablen setzt sich. In VS08 ist es sich an: -

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

Was die vcvars32 oder vsvars32 Batch-Dateien zu tun ist keine Raketenwissenschaft. Sie setzen einfach die PATH, INCLUDE, LIB und möglicherweise die LIBPATH-Umgebungsvariablen auf vernünftige Standardwerte für die jeweilige Compiler-Version.

Alles, was Sie tun müssen, ist, stellen Sie sicher, dass diese Dinge richtig für Ihre Ant oder Make-Datei eingestellt werden (entweder vor ihnen oder in ihnen Aufruf).

Für INCLUDE und LIB / LIBPATH eine Alternative dieser Elemente in Umgebungsvariablen Einstellung ist es, diese Einstellungen zu übergeben Linie als expliziter Parameter zu steuern.

Die vcvarsall.bat Batch-Datei, die von der Visual Studio-Eingabeaufforderung ausgeführt wird einfach versucht, Ihre Systemumgebungsvariablen zu halten und Pfade schön und sauber (und ist wichtig, wenn Sie mehrere Versionen von Visual Studio haben).

Wenn Sie gerne Ihre Einrichtung einer Version zu begrenzen und einen langen Pfad aufweist und von Umgebungsvariablen, übertragen diese Einstellungen (manuell) auf die Systemumgebungsvariablen (Arbeitsplatz | Eigenschaften --- oder Win-Pause / Pause ).

Ich würde empfehlen, gegen diese aber!

Der Trick ist, immer die richtige vcvars Batch-Datei zu verwenden. Wenn Sie nur eine Version von Visual Studio installiert haben, ist das kein großes Problem. Wenn Sie mit mehreren Versionen wie ich es zu tun, wird es sehr einfach, ein MSVC ++ 14 Build in einer Konsole ausgeführt werden, die mit einer MSVC ++ 15 vcvars Datei eingerichtet wurden. Es könnte oder nicht, aber was auch immer Sie bekommen wird anders sein, was man von würde bauen in Visual Studio.

Wir haben mit diesem Problem gehandelt Terp durch die richtigen vcvars Datei aus dem gewählten Compiler Ableiten und die Einrichtung immer die Umwelt intern mit dem Werkzeug-Aufruf. Auf diese Weise haben Sie immer die richtigen vcvars für den Compiler Datei, die Sie verwenden.

Just zu wiederholen: Ich empfehle vor dem Versuch, manuell, was die vcvars Datei wird für Sie zu duplizieren. Sie sind verpflichtet, etwas zu verpassen oder es genau richtig genug, dass es aussieht wie es funktioniert, während tatsächlich etwas etwas anders zu tun, was man wollte.

Meine Version der Visual Studio-Befehlszeile für Visual Studio-Eingabeaufforderung in . Wird intern verwendet, eine Bibliothek / Projekt zu erstellen und dann einige zusätzliche Schritte mit den daraus resultierenden DLL-Dateien ausführen.

Kopieren Sie diese Zeilen in Ihre Compile and execute other steps.cmd Datei, oder ähnliches.

@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

In dieser Version des Skripts, ich später in der interaktiven Kommandozeilen-Modus „bleiben“. Kommentar REM %comspec% /k nur das Skript für nicht interaktive Zwecke.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top