W poniższym kodzie, chciałbym wartość THE_VERSION_STRING
należy podjąć od wartości zmiennej środowiskowej MY_VERSION
w czasie kompilacjiJak używać preprocesora C zmuszony w środowisku zmiennym
namespace myPluginStrings {
const char* pluginVendor = "me";
const char* pluginRequires = THE_VERSION_STRING;
};
więc, że jeśli typ:
export MY_VERSION="2010.4"
pluginRequires
zostanie ustawiony na „2010.4”, nawet jeśli MY_VERSION
jest ustawiony na coś innego w czasie wykonywania.
AKTUALIZACJA: (Feb 21) Dzięki za pomoc dla wszystkich. To działa. Ponieważ używam Rake jako systemu kompilacji, każda z moich CFLAGS jest zmienną ruby. Również wartości muszą kończyć się w cudzysłowach. Dlatego linia poleceń gcc dla mnie powinien wyglądać następująco:
gcc file.c -o file -D"PLUGIN_VERSION=\"6.5\""
Co oznacza to w moim Rakefile:
"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
To nie jest coś, co zrobi preprocesor. To jest coś, co musiałby zrobić twój system kompilacji. – GManNickG