Макрос Visual Studio (-D) из вывода команды - PullRequest
2 голосов
/ 01 декабря 2011

Я пытаюсь получить вывод 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?

1 Ответ

0 голосов
/ 21 августа 2012

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

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

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

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

...