【问题标题】:Visual Studio macro (-D) from command output命令输出中的 Visual Studio 宏 (-D)
【发布时间】:2012-01-10 06:47:08
【问题描述】:

我正在尝试将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))?

【问题讨论】:

    标签: visual-studio preprocessor environment-variables


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-05
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多