Das setzen von environment-Variablen in pre-build-event und mithilfe bei der Kompilierung Schritt
In Visual Studio 2003, bin ich versucht, eine Umgebungsvariable festlegen, die in der pre-build-Ereignis wird dann in der Zusammenstellung Schritt, aber der Wert scheint nicht weitergegeben werden. Zum Beispiel, wenn die pre-build-Ereignis enthält diese (entweder direkt oder in einer batch-Datei):
set MY_LIB_VERSION=1.0.0
und AdditionalIncludeDirectories hat:
c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include
dann würde ich erwarten, dass die Zusammenstellung funktionieren, wenn der my_lib_v1.0.0
Verzeichnis vorhanden ist. Aber stattdessen bekomme ich
c:\path\to\prog\my_prog.c(22) : fatal error C1083: Cannot open include file: 'my_lib.h' Projekt : Warnung PRJ0018 : Die folgenden environment-Variablen konnten nicht gefunden werden: $(MY_LIB_VERSION)
Ich folgern, dass die Umgebungsvariable in der pre-build-Ereignis ist daher nicht propagiert, um die Zusammenstellung Schritt, aber ich kann etwas vermissen.
Wie kann ich die Umgebungsvariable in der pre-build-event und verwenden Sie es in der Zusammenstellung Schritt?
(Alternativ jede andere sinnvolle Möglichkeiten der Definition einer Bibliothek version einmal und verwenden Sie es mehrmals für AdditionalIncludeDirectories und AdditionalLibraryDirectories wäre genau so gut.)
Update: ich landete Lösung unseres Problems in einer anderen Weise. Wir verwenden Subversion, und richten Sie die svn:externals
- Eigenschaft auf ein Unterverzeichnis des Projekts Quelle genannt dependencies
, so dass ein checkout des Projektes zusätzlich check-out <svn_path>\libraries\my_lib_v1.0.0
und nennen es dependencies\my_lib
in der Arbeitskopie. Dann den Projekt-Einstellungen finden Sie dependencies\my_lib\include
und dergleichen. Die Aktualisierung auf version 1.0.1 my_lib
ist dann einfach eine Sache der Bearbeitung der svn:externals
Eigenschaft-den code-und Projekt-Einstellungen nicht ändern müssen.
SETX
zum speichern von Umgebungsvariablen beharrlich. Quelle: ss64.com/nt/setx.htmlInformationsquelleAutor Paul Stephenson | 2009-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie vielleicht, um das zu prüfen-Werkzeug: http://workspacewhiz.com/SolutionBuildEnvironmentReadme.html
Wir verwenden es die ganze Zeit zum verwalten von Umgebungsvariablen in unsere build-Umgebung.
Es scheint, dass ein Add-in wie das ist der einzige Weg, um Bearbeiten Sie die Visual Studio-eigenen Umgebungsvariablen, so werde ich Sie akzeptieren diese Antwort, obwohl es nicht etwas, was ich anwenden könnte, die in unser Unternehmen.
Dieses addin ist Super und ist soweit ich weiß die einzige Lösung zum hinzufügen von env var dynamisch. Aber beachten Sie, dass die Linien auf Ihre Dateien, die die env vars darf nicht mehr als 2048 Zeichen (es ist ein hässliches char[2048] auf den source-code des add-in).
Weiß jemand, ob das funktioniert mit VS 2013?
InformationsquelleAutor Paul Hollingsworth
Ich muss zugeben, dass ich noch nie versucht, das setzen von Umgebungsvariablen in einem pre-build-Schritt, und ich kann sehen, warum es würde nicht unbedingt funktionieren (ausführen einer batch-Datei würde wahrscheinlich trigger einen separaten Prozess, während Sie wollen, um zu manipulieren, dass der übergeordnete Prozess, der die Umgebung).
Einen workaround habe ich mit, aber das wird nur funktionieren, wenn Sie können bestimmen, dass die notwendigen Einstellungen vor dem starten von Visual Studio, ist das erstellen einer batch-Datei, setzt die notwendigen Umgebungsvariablen und startet dann von Visual Studio die passende Lösung-Datei. Ich habe reproduziert das Skelett dieses batch-Datei unter:
InformationsquelleAutor Timo Geusch
Umgebungsvariablen, die gesetzt werden mit dem SET-Befehl sind temporär und nur für die Lebensdauer des Prozesses, in dem Sie eingestellt sind. Sie sofort erlischt, wenn der Prozess abläuft - und nicht gesehen werden kann von anderen Prozessen.
Einem Visual Studio-pre-build-Ereignis ist ein separater Prozess. Sobald dieser Prozess abläuft, dass die environment-variable nicht mehr.
Sind Sie sicher, dass die Umgebungsvariablen sind, was Sie wollen? Könnten Sie tun dies, indem Sie einen Wert in eine text-Datei statt auf einen zentralen Speicherort im Netzwerk?
BEARBEITEN: Wenn Sie wirklich wollen, beharrlich ändern von Umgebungsvariablen in Windows, können Sie es tun, aber es beinhaltet die Berufung auf einige Windows-APIs, anstatt nur den Aufruf GESETZT. E. g. http://code.activestate.com/recipes/416087/
Versuchen Sie googeln Umgebungsvariable windows beibehalten
InformationsquelleAutor Sam Meldrum