Visual Studio宏(-D)来自命令输出

时间:2011-12-01 02:51:58

标签: visual-studio preprocessor environment-variables

我正在尝试将git describe的输出作为预处理器定义添加到我的构建中,以用于版本控制模块。不幸的是,它有点相反(不确定问题出在哪里)。

我有一个预构建活动,如:

 for /f "delims=" %a in ('git describe') do set GITID=%a

从命令提示符开始,但在构建中返回代码255(导致错误)。所以我把它改成了:

git describe > buildprops_gitid.txt
set /p GITID= < buildprops_gitid.txt

再次,在命令提示符下工作(并且在构建期间不会出错)。使用正确的值创建文件。

在预处理器设置中,我有:

BUILD_TARGETFILE=$(TargetFileName)
BUILD_GITID=$(GITID)

前者工作正常,将目标文件名按预期放入文件中。后者不起作用,而是放一个空字符串。我怀疑这与env var在途中丢失有关。

有没有办法获取CLI程序的输出并将其用作Visual Studio中的变量($(var))?

1 个答案:

答案 0 :(得分:0)

我找到的解决方法是在预构建事件中生成包含文件。 类似于以下version.bat脚本:

@echo off
FOR /F "tokens=*" %%i IN ('call git describe --always') DO echo #define VCSVERSION "%%i" > vcsversion.h

然后在代码中添加#include "vcsversion.h"

这基本上是我建议的解决方案here