Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use environment variable as compile time constant in C++

As part of a build process, I need to take an environment variable defined by a batch script and use it as a constant within the code at compile time.

For example, say I have defined an environment variable named BUILD_VERSION and set it to 1.0.0, when compiled I want 1.0.0 to be baked into my code. EG:

Batch file:

set BUILD_VERSION = 1.0.0
; call vs compiler

C++ File:

const std::string build_version = BUILD_VERSION // Which will result in "1.0.0".

How would I go about doing this?

like image 335
matthewrdev Avatar asked Apr 03 '14 02:04

matthewrdev


1 Answers

In the end I followed txchelp advice and added a /D flag into the Command Line -> Additional Options section of the project properties to declare the environment variable as a preprocessor definition.

It looked something like this:

enter image description here

Then in the batch script that started the build:

set SVN_BUILD_VERSION=1.0.0

And finally to extract it as a string within the source code:

#define STRINGIZER(arg)     #arg
#define STR_VALUE(arg)      STRINGIZER(arg)
#define BUILD_VERSION_STRING STR_VALUE(BUILD_VERSION)

// ...

const std::string version = BUILD_VERSION_STRING; // Results in "1.0.0".
like image 128
matthewrdev Avatar answered Sep 18 '22 19:09

matthewrdev