在C++中使用环境变量作为编译时常量

mat*_*dev 6 c++ environment-variables visual-studio

作为构建过程的一部分,我需要获取由批处理脚本定义的环境变量,并在编译时将其用作代码中的常量.

例如,假设我已经定义了一个名为的环境变量BUILD_VERSION并将其设置为1.0.0,在编译时我希望1.0.0将其编入我的代码中.例如:

批处理文件:

set BUILD_VERSION = 1.0.0
; call vs compiler
Run Code Online (Sandbox Code Playgroud)

C++文件:

const std::string build_version = BUILD_VERSION // Which will result in "1.0.0".
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

mat*_*dev 5

最后,我遵循了txchelp的建议,并在项目属性/D的“ 命令行->其他选项”部分添加了一个标志,以将环境变量声明为预处理器定义。

它看起来像这样:

在此处输入图片说明

然后在开始构建的批处理脚本中:

set SVN_BUILD_VERSION=1.0.0
Run Code Online (Sandbox Code Playgroud)

最后将其提取为源代码中的字符串:

#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".
Run Code Online (Sandbox Code Playgroud)