IAR打印环境变量字符串:预处理程序定义的符号

时间:2017-05-26 15:32:34

标签: c jenkins environment-variables preprocessor iar

作为Jenkins构建的一部分,Jenkins有许多环境变量。其中两个是BUILD_NUMBER和BRANCH_NAME。我们将这些添加到预处理器定义的符号:

enter image description here

现在可以在编译时访问这些环境变量:

#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”,编译器获取正确的值。但是,我如何在我的代码中使用它?它适用于数字,但我如何为字符串做同样的事情?

2 个答案:

答案 0 :(得分:1)

考虑使用:

#define BRANCH_NAME localbuild

如果你有这些定义加上:

-DBRANCH_NAME=localbuild

(可能在{1}}之类的命令行上设置 - 通常,您无法从C预处理器访问环境变量),然后使用它:

printf("Git branch name [%s]\n", GIT_BRANCH_NAME);     

输出如下:

printf("Git branch name [%s]\n", "localbuild");

答案 1 :(得分:0)

简单的回答,必须像这样添加一个字符串环境变量: BRANCH_NAME = “$ _ BRANCH_NAME _ $”