Поделиться через


Задание пользовательских средств построения

Настраиваемый инструмент построения предоставляет системе построения сведения, необходимые ей для построения определенных входных файлов.Настраиваемый инструмент построения указывает команду, которую необходимо выполнить, список выходных файлов, создаваемых этой командой, и (при необходимости) описание инструмента.

Общие сведения о настраиваемых инструментах построения и настраиваемых этапах построения см. в разделе Сведения об этапах настраиваемого построения и событиях построения..

Задание инструмента настраиваемого построения

  1. Откройте диалоговое окно Страницы свойств проекта.Дополнительные сведения см. в разделе Установка свойств проекта C++.

  2. Щелкните Свойства конфигурации, чтобы получить доступ к полю Конфигурация.В поле Конфигурация выберите конфигурацию, для которой нужно задать инструмент настраиваемого построения.

  3. В Обозревателе решений выберите входной файл для инструмента настраиваемого построения.

    Если папка Настраиваемый инструмент построения не отображается, расширение выбранного файла связано с инструментом по умолчанию.Например, инструментом по умолчанию для C- и CPP-файлов является компилятор.Чтобы переопределить инструмент по умолчанию, в узле Свойства конфигурации в папке Общие для свойства Тип элемента выберите значение Настраиваемый инструмент построения.Нажмите кнопку Применить, и отобразится узел Настраиваемый инструмент построения.

  4. В узле Инструмент настраиваемого построения, в папке Общие сведения, задайте свойства, связанные с инструментом настраиваемого построения:

    • В поле Дополнительные зависимости задайте дополнительные файлы, кроме файла, для которого определяется инструмент настраиваемого построения (файл, связанный с инструментом настраиваемого построения неявно рассматривается как входной файл для инструмента).Наличие дополнительных входных файлов не является обязательным для настраиваемого инструмента построения.Если имеются несколько дополнительных входов, разделяйте их точкой с запятой.

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

      Например, предположим, имеется инструмент настраиваемого построения, который воспринимает файл MyInput.x как входной и создает файл MyInput.cpp, а MyInput.x включает файл заголовка MyHeader.h.Можно задать MyHeader.h как входную зависимость от MyInput.x, а система построения будет строить файл MyInput.cpp, если он устарел по отношению к файлам MyInput.x или MyHeader.h.

      Входные зависимости могут также гарантировать, что инструменты настраиваемого построения выполняются в нужном порядке.В предыдущем примере предположим, что файл MyHeader.h в действительности является выходным файлом инструмента настраиваемого построения.Поскольку MyHeader.h является зависимостью от MyInput.x, система построения вначале строит файл Myheader.h перед выполнением инструмента настраиваемого построения на файле MyInput.x.

    • В качестве значения свойства Командная строка укажите команду в том виде, в котором она использовалась бы в командной строке.Укажите допустимый командный или пакетный файл и (при необходимости) входные и выходные файлы.Укажите команду выполнения пакетного файла call перед именем пакетного файла, чтобы обеспечить выполнение всех последующих команд.

      С помощью макросов MSBuild можно символически указать несколько входных и выходных файлов.Дополнительные сведения о задании расположения файлов и имен наборов файлов см. в разделе Макросы для команд и свойств построения.

      Поскольку в MSBuild символ "%" является зарезервированным, при указании переменной среды необходимо заменить каждый escape-символ % на шестнадцатеричную escape-последовательность %25.Например, %WINDIR% необходимо заменить на %25WINDIR%25.MSBuild заменяет каждую escape-последовательность %25 знаком %, прежде чем обращаться к переменной среды.

    • В поле Описание введите описание настраиваемого инструмента построения.Это сообщение будет выводиться в окне Выходные данные при обработке этого инструмента системой построения.

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

      Имя выходного файла должно совпадать с указанным в свойстве Командная строка.Система построения проекта будет искать файл и проверять дату его создания.Если выходной файл был создан позже входного файла или выходной файл не найден, настраиваемый инструмент построения выполняется.Если все файлы Дополнительные зависимости созданы раньше входного файла и входной файл создан раньше файла, указанного в свойстве Выходные данные, настраиваемый инструмент построения не выполняется.

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

Пример

Предположим, что необходимо включить в проект файл с именем parser.l.Нужно, чтобы лексический анализатор обработал parser.l для создания C-файла с тем же базовым именем (parser.c).

Вначале файлы parser.l и parser.c добавляются в проект.Если файлы не существуют, нужно просто добавить ссылку на файлы.Пользователь создает инструмент настраиваемого построения для parser.l и задает следующее значение свойства Команды:

lexer %(FullPath) .\%(Filename).c

Эта команда запустит лексический анализатор для файла parser.l и направит выходной файл parser.c в каталог проекта.

В свойстве Выходные данные введите следующее:

.\%(Filename).c

При построении проекта система построения сравнивает метки времени файлов parser.l и parser.c.Если файл parser.l создан позже или файл parser.c не существует, система построения выполняет команду, указанную в свойстве Командная строка, чтобы обновить файл parser.c.Поскольку файл parser.c также добавляется в проект, после этого система построения компилирует файл parser.c.

См. также

Ссылки

Устранение неполадок настроек построения

Другие ресурсы

Макросы для команд и свойств построения