Visual Studio 2017 User Macros
От: Nikolaz Германия www.nikeware.com
Дата: 05.12.18 10:47
Оценка:
Всем доброго дня!

Есть некий 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" пересчитать всё это заново.

Спасибо!
Re: Visual Studio 2017 User Macros
От: Muxa  
Дата: 05.12.18 12:16
Оценка:
N>Как подобное повторить в проекте Visual Studio?

генерируй солюшен cmake'ом
Re: Visual Studio 2017 User Macros
От: Conr Россия  
Дата: 05.12.18 13:08
Оценка: 6 (1)
Здравствуйте, 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>
...
Отредактировано 05.12.2018 13:10 Conr . Предыдущая версия .
Re[2]: Visual Studio 2017 User Macros
От: Nikolaz Германия www.nikeware.com
Дата: 05.12.18 14:29
Оценка:
Здравствуйте, 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]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.