Nel seguente codice, desidero il valore di THE_VERSION_STRING
essere preso dal valore della variabile di ambiente MY_VERSION
al momento della compilazioneCome si utilizza il preprocessore C effettua una sostituzione con un ambiente variabile
namespace myPluginStrings {
const char* pluginVendor = "me";
const char* pluginRequires = THE_VERSION_STRING;
};
Così che se digito:
export MY_VERSION="2010.4"
pluginRequires
sarà fissato a "2010.4", anche se MY_VERSION
è impostato su qualcosa d'altro in fase di esecuzione.
AGGIORNAMENTO: (21 febbraio) Grazie per il vostro aiuto a tutti. Funziona. Poiché utilizzo Rake come un sistema di compilazione, ciascuno dei miei CFLAGS è una variabile ruby. Anche i valori devono finire tra virgolette. Pertanto la linea di comando gcc per me ha bisogno di guardare in questo modo:
gcc file.c -o file -D"PLUGIN_VERSION=\"6.5\""
Il che significa che questo è nel mio Rakefile:
"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
Questo non è qualcosa che il preprocessore farà. Questo è qualcosa che il tuo sistema di build dovrebbe fare. – GManNickG