Das Setzen von Umgebungsvariablen in cmd hat keine Auswirkungen

3144
riv

Ich versuche, Pfade zu VS-Tools einzurichten, um sie in der Befehlszeile auszuführen, wie in https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx

Ich führe vcvarsall x64von der Eingabeaufforderung mit erhöhten Rechten aus und überprüfe den Inhalt der INCLUDEVariablen:

Das Setzen von Umgebungsvariablen in cmd hat keine Auswirkungen

Dann schließe ich die Eingabeaufforderung, öffne sie erneut und überprüfe die INCLUDEVariable:

Das Setzen von Umgebungsvariablen in cmd hat keine Auswirkungen

Wie Sie sehen, gingen die Änderungen verloren, als ich CMD schloss. Wie kann ich sicherstellen, dass sie in die Systemumgebung gelangen?

Ich verwende Win 8.1, wenn es darauf ankommt.

1

2 Antworten auf die Frage

1
Ƭᴇcʜιᴇ007

Dies liegt daran, dass die ausgeführten Batch-Dateien Setzum Einstellen der Umgebungsvariablen verwendet werden (dies C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.batwird beim Ausführen ausgeführt vcvarsall x64).

Legt jedoch Setnur Variablen für die aktuelle Befehlszeilensitzung fest. Sie müssen es verwenden Setx, damit es zwischen Befehlszeilen-Sitzungen "hängen bleibt".

Weitere Informationen erhalten Sie in den folgenden Fragen und Antworten zu SU:

Nach Kommentaren bearbeiten:

"Die gesetzten Befehle befanden sich jedoch im Standardskript."

VCVarsAll soll ausgeführt werden, um die Umgebung für den einzelnen Build / die Aktion, die Sie ausführen möchten, einzurichten, nicht um sie dauerhaft festzulegen.

Visual Studio installiert bestimmte "Eingabeaufforderungs" -Einträge für den Zugriff auf die Tools (Über Ihren Link: "... und wählen Sie dann eine der systemeigenen Eingabeaufforderungen des Werkzeugs oder des Tools"). Diese speziellen Eingabeaufforderungsbefehle führen ein / die Batchdatei, um sicherzustellen, dass die Dinge richtig eingestellt sind, wenn Sie diese Verknüpfungen verwenden.

Sie können diese Verknüpfungen mit Ihren eigenen replizieren ...

Erstellen Sie eine neue Verknüpfung zu cmd /k "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64, die die Batchdatei ausführt (unter Verwendung von x64 als Umgebungsoption), und halten Sie das Befehlszeilenfenster geöffnet.

Verwenden Sie dann diese Verknüpfung, um die Eingabeaufforderung zu öffnen, wenn Sie die Tools verwenden möchten.

Aber die `set`-Befehle waren im Standardskript. Sie meinen, ich muss das ganze Skript bearbeiten, damit es funktioniert (setx hat auch eine etwas andere Syntax). Der Versuch, es lokal auszuführen, ist auch problematisch, da ich FAR Manager verwende und Bat-Skripts in seinem eigenen Prozess ausführt. Nach Abschluss des Skripts gehen alle Änderungen verloren. Daher muss ich für meine gesamte Arbeit Raw CMD verwenden, was sehr unpraktisch ist . riv vor 8 Jahren 0
0
Sergei

Ja, Sie können die Umgebung in eine Datei extrahieren:

cmd /C "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && set > d:\t.txt 

Dann können Sie diese Datei direkt in das Makefile einfügen oder eine andere Option verwenden, die Ihren Anforderungen entspricht.