Всем доброго дня!
Есть некий project.pri файл из Qt. Там есть такой код:
GIT_VERSION = $$system(git --git-dir $$PWD/.git --work-tree $$PWD describe --always)
BUILD_TAG = Build: $$GIT_VERSION : $$_DATE_
DEFINES += "GIT_VERSION=\"$$GIT_VERSION\""
DEFINES += "BUILD_TAG=\"\\\"$$BUILD_TAG\\\"\""
Как подобное повторить в проекте Visual Studio?
Про "User Macros" (те, что хранятся *.props файлах) знаю. Свои собственные $(MyBlaBla) создать могу.
Загвоздка в том, что MyBlaBla определяется статически (или я ошибаюсь?), а мне бы хотелось где-то в "Pre-Build Event" пересчитать всё это заново.
Спасибо!
Здравствуйте, Nikolaz, Вы писали:
N>Есть некий project.pri файл из Qt. Там есть такой код:
N>N>GIT_VERSION = $$system(git --git-dir $$PWD/.git --work-tree $$PWD describe --always)
N>BUILD_TAG = Build: $$GIT_VERSION : $$_DATE_
N>DEFINES += "GIT_VERSION=\"$$GIT_VERSION\""
N>DEFINES += "BUILD_TAG=\"\\\"$$BUILD_TAG\\\"\""
N>
N>Как подобное повторить в проекте Visual Studio?
Если повторять почти один в один, то просто добавь в конец .vcxproj (перед закрытием </Project>)
<Target Name="GenerateBuildTag" BeforeTargets="ClCompile">
<!-- "$(SolutionDir)." is important! Git does not like trailing \ -->
<Exec Command='git --git-dir "$(SolutionDir).git" --work-tree "$(SolutionDir)." describe --always' ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="GIT_VERSION" />
</Exec>
<PropertyGroup>
<BUILD_TAG>"Build: $(GIT_VERSION) : $([System.DateTime]::Now.ToString('r'))"</BUILD_TAG>
</PropertyGroup>
<Message Text="BUILD_TAG: $(BUILD_TAG)" />
<ItemGroup>
<ClCompile>
<PreprocessorDefinitions>%(PreprocessorDefinitions);BUILD_TAG=$(BUILD_TAG)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
</Target>
Но удобнее воспользоваться GitVersion из
https://github.com/loresoft/msbuildtasks/
<Target Name="GenerateBuildTag" BeforeTargets="ClCompile">
<GitVersion LocalPath="$(SolutionDir)">
<Output TaskParameter="CommitHash" PropertyName="Revision" />
</GitVersion>
...
Здравствуйте, Conr, Вы писали:
Спасибо огромное!
До <Exec /> я кое-как сам дошёл с помощью гугла.
Оставался только вот этот шаг:
C>C> <ItemGroup>
C> <ClCompile>
C> <PreprocessorDefinitions>%(PreprocessorDefinitions);BUILD_TAG=$(BUILD_TAG)</PreprocessorDefinitions>
C> </ClCompile>
C> </ItemGroup>
C>
C>Но удобнее воспользоваться GitVersion из https://github.com/loresoft/msbuildtasks/
Спасибо! Посмотрю обязательно!
C>[/code]