Шаг пользовательской сборки Visual Studio для создания заголовков

У меня есть проект с заголовками, которые обычно генерируются по мере необходимости с интерфейсом командной строки. Но я хочу добавить этот этап генерации в Visual Studio 2015 (набор инструментов v141, C++) в качестве пользовательского этапа сборки. Итак, я сделал это, и это действительно работает, но генерирует их слишком поздно. Действительно, если файлы еще не существуют, сборка проекта завершается с ошибкой "невозможно включить файл myHeader.h".

я добавил шаг пользовательской сборки, добавив свойства проекта -> Шаг пользовательской сборки -> общие:

  • Командная строка: команда для создания заголовочного файла (работает)
  • Выходные данные: $(ProjectDir)generated-header;%(Outputs)
  • Выполнить до: PreBuildEvent

Вывод на самом деле не нужен, так как командная строка генерирует файлы и автоматически помещает их в нужную папку. но это не работает, если я не укажу выходную папку.

Моя проблема может заключаться в Выполнить до. Но я не знаю, какой вариант добавить. этот кажется хорошим еще.

EDIT что-то странное в том, что иногда удается создать его перед сборкой, но если я удалю их и снова соберу. Они больше не генерируются и проект не строится.

EDIT2 на самом деле это работает, только если я изменяю свойства проекта, так как это заставляет перегенерировать все требования. В противном случае, если я создам как обычно, он пропустит шаг пользовательской сборки, потому что Visual Studio считает, что он обновлен.


person Hattori    schedule 06.04.2020    source источник


Ответы (1)


Кажется, я решил это. Я сделал пользовательский шаг сборки для создания своих файлов, но он сказал здесь

Этап пользовательской сборки

Пользовательские шаги сборки включены как часть интеллектуальных функций, которые управляют добавочной сборкой с использованием свойств «Дополнительные зависимости» и «Выводы». Если затронут файл в вашем свойстве «Дополнительные зависимости», то ваш шаг пользовательской сборки будет считаться устаревшим и будет создан с вашей следующей сборкой.

Создание событий

Здесь ничего особо не изменилось с VS2008. Эти три события (перед сборкой, перед связыванием и после сборки) запускаются в ходе обычной сборки и позволяют выполнять произвольные команды на уровне проекта.

Таким образом, я создаю событие Build, и мои файлы теперь генерируются в любое время и до проверки включаемых файлов.

person Hattori    schedule 06.04.2020