Frage

In dem folgenden Code, würde ich den Wert von THE_VERSION_STRING wie aus dem Wert des Umgebungsvariablen MY_VERSION bei der Kompilierung genommen werden

namespace myPluginStrings {
const  char* pluginVendor = "me";
const  char* pluginRequires =  THE_VERSION_STRING;
};

Also, wenn ich ein:

export MY_VERSION="2010.4"

pluginRequires wird bei „2010.4“ gesetzt werden, auch wenn MY_VERSION auf etwas gesetzt wird sonst zur Laufzeit.

UPDATE: (21. Februar) Vielen Dank für Ihre Hilfe jeder. Es klappt. Wie ich Rake als Build-System bin mit jedem meiner CFLAGS ist ein Ruby-Variable. Auch müssen die Werte in Anführungszeichen enden. Deshalb ist die gcc-Befehlszeile für mich muss wie folgt aussehen:

gcc file.c -o file -D"PLUGIN_VERSION=\"6.5\"" 

Was bedeutet dies in meinem Rakefile ist:

"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
War es hilfreich?

Lösung

Wenn ich mich richtig erinnere, können Sie die Befehlszeilenparameter verwenden -D mit gcc #define einem Wert zum Zeitpunkt der Kompilierung.

h .:

$ gcc file.c -o file -D"THE_VERSION_STRING=${THE_VERSION_STRING}"

Andere Tipps

  

In dem folgenden Code, würde ich den Wert von THE_VERSION_STRING wie aus dem Wert der Umgebungsvariablen MY_VERSION bei der Kompilierung genommen werden

Nein, man kann es so nicht. Der einzige Weg, um Extrakt Umgebungsvariablen zur Laufzeit mit der getenv() Funktion. Sie müssen explizit den Wert extrahieren und kopieren Sie sie in pluginRequires.

Wenn Sie die Wirkung einer Compile-Zeit konstant wollen, dann werden Sie die Definition auf der Compiler-Kommandozeile als Seth vermuten läßt.

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