Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I use the C preprocessor to make a substitution with an environment variable

In the code below, I would like the value of THE_VERSION_STRING to be taken from the value of the environment variable MY_VERSION at compile time

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

So that if I type:

export MY_VERSION="2010.4"

pluginRequires will be set at "2010.4", even if MY_VERSION is set to something else at run time.

UPDATE: (feb 21) Thanks for your help everyone. It works. As I'm using Rake as a build system, each of my CFLAGS is a ruby variable. Also the values need to end up in quotes. Therefore the gcc command line for me needs to look like this:

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

Which means this is in my Rakefile:

"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
like image 848
Julian Mann Avatar asked Feb 19 '10 21:02

Julian Mann


1 Answers

If I recall correctly, you can use the command line parameter -D with gcc to #define a value at compile time.

i.e.:

$ gcc file.c -o file -D"THE_VERSION_STRING=${THE_VERSION_STRING}"
like image 162
Seth Avatar answered Sep 28 '22 00:09

Seth