Макрос Visual Studio (-D) из вывода команды

Я пытаюсь получить вывод 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 и использовать его как переменные ($(var)) в Visual Studio?


person ssube    schedule 01.12.2011    source источник


Ответы (1)


Обходной путь, который я нашел для этого, заключался в создании файла включения в событии перед сборкой. что-то вроде следующего сценария version.bat:

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

а затем добавьте #include "vcsversion.h" в код.

это в основном решение, которое я предложил здесь

person umläute    schedule 21.08.2012