IAR 打印环境变量字符串:预处理器定义的符号
IAR print environment variable string : Preprocessor Defined symbols
作为我们构建 Jenkins 的一部分,Jenkins 有很多环境变量。其中两个是 BUILD_NUMBER 和 BRANCH_NAME。我们将这些添加到预处理器定义的符号中:
这些环境变量现在可以在编译时访问:
#define APPLICATION_VERSION_MAJOR (1)
#define APPLICATION_VERSION_MINOR (1)
#define APPLICATION_VERSION_BUILD (BUILD_NUMBER)
#define GIT_BRANCH_NAME (BRANCH_NAME)
使用 BUILD_NUMBER 没问题,它是一个数字,但在尝试使用 BRANCH_NAME 时出现错误。例如:
debug(DEBUG_LEVEL_INFO, "software version %d.%d.%d branch %s", APPLICATION_VERSION_MAJOR, APPLICATION_VERSION_MINOR, APPLICATION_VERSION_BUILD, GIT_BRANCH_NAME);
我收到错误:
Error[Pe020]: identifier "localbuild" is undefined D:\repo\source\state_machine.c 284
环境变量 BRANCH_NAME 设置为 "localbuild",编译器正在获取正确的值。但是,如何在我的代码中使用它?它适用于数字,但我如何对字符串执行同样的操作?
简单的回答,必须像这样添加一个字符串环境变量:
BRANCH_NAME="$_BRANCH_NAME_$"
考虑使用:
#define STRINGIFY(x) #x
#define EVALUATE_STRING(x) STRINGIFY(x)
#define GIT_BRANCH_NAME EVALUATE_STRING(BRANCH_NAME)
如果您有这些定义加上:
#define BRANCH_NAME localbuild
(这可能是在命令行上用 -DBRANCH_NAME=localbuild
之类的东西设置的——通常,你不能从 C 预处理器访问环境变量),然后你使用它:
printf("Git branch name [%s]\n", GIT_BRANCH_NAME);
输出如下:
printf("Git branch name [%s]\n", "localbuild");
作为我们构建 Jenkins 的一部分,Jenkins 有很多环境变量。其中两个是 BUILD_NUMBER 和 BRANCH_NAME。我们将这些添加到预处理器定义的符号中:
这些环境变量现在可以在编译时访问:
#define APPLICATION_VERSION_MAJOR (1)
#define APPLICATION_VERSION_MINOR (1)
#define APPLICATION_VERSION_BUILD (BUILD_NUMBER)
#define GIT_BRANCH_NAME (BRANCH_NAME)
使用 BUILD_NUMBER 没问题,它是一个数字,但在尝试使用 BRANCH_NAME 时出现错误。例如:
debug(DEBUG_LEVEL_INFO, "software version %d.%d.%d branch %s", APPLICATION_VERSION_MAJOR, APPLICATION_VERSION_MINOR, APPLICATION_VERSION_BUILD, GIT_BRANCH_NAME);
我收到错误:
Error[Pe020]: identifier "localbuild" is undefined D:\repo\source\state_machine.c 284
环境变量 BRANCH_NAME 设置为 "localbuild",编译器正在获取正确的值。但是,如何在我的代码中使用它?它适用于数字,但我如何对字符串执行同样的操作?
简单的回答,必须像这样添加一个字符串环境变量: BRANCH_NAME="$_BRANCH_NAME_$"
考虑使用:
#define STRINGIFY(x) #x
#define EVALUATE_STRING(x) STRINGIFY(x)
#define GIT_BRANCH_NAME EVALUATE_STRING(BRANCH_NAME)
如果您有这些定义加上:
#define BRANCH_NAME localbuild
(这可能是在命令行上用 -DBRANCH_NAME=localbuild
之类的东西设置的——通常,你不能从 C 预处理器访问环境变量),然后你使用它:
printf("Git branch name [%s]\n", GIT_BRANCH_NAME);
输出如下:
printf("Git branch name [%s]\n", "localbuild");