Пользовательский шаг сборки Xcode 4 перед компиляцией - PullRequest
7 голосов
/ 10 декабря 2011

Я пытаюсь интегрировать инструмент в Xcode 4, который генерирует заголовок C из файла дескриптора. В Xcode 3 это работало, чтобы добавить пользовательский шаг сборки для файлов с определенным расширением. Эти файлы затем компилируются перед файлами .m / .mm / .cpp, в которые они были включены. Когда я пытаюсь сделать это с Xcode 4, кажется, что он выполняет мой пользовательский шаг после компиляции другого источника. Это не работает, конечно. Есть ли способ сказать XCode выполнить шаг раньше?

Вот простая настройка воспроизведения:

enter image description here

Мой main.m содержит:

#include <mytest.h>

и я добавил ${DERIVED_FILE_DIR} к пути поиска заголовка. Когда я компилирую этот проект, я получаю следующее:

enter image description here

Если я удаляю включение и собираю его снова, я получаю это:

enter image description here

Так что правило действительно работает, но выполняется слишком поздно. Есть ли способ изменить это поведение?

Ответы [ 3 ]

7 голосов
/ 18 июня 2013

У меня уже есть значок Возрождения, но здесь идет:)

Я только что столкнулся с этой проблемой, и ответ прост (теперь я полдня смотрел на нее).

Правило сборки отвечает на исходный файл (.abc), и исходный файл обрабатывается в порядке, указанном на шаге сборки «Компилировать источники». Просто войдите в правило сборки и перетащите .abc в начало списка.

Надеюсь, один маленький шаг к моему значку археолога.

3 голосов
/ 10 декабря 2011

Вместо добавления правила сборки: на вкладке Фазы сборки, используя кнопку Добавить фазу сборки, выберите Добавить сценарий запуска.Будет добавлена ​​фаза запуска сценария, в которой вы сможете реализовать требования сценария.Фаза нового сценария выполнения может быть перетащена до фазы Compile Sources, когда вы хотите, чтобы ваша функциональность была выполнена.

0 голосов
/ 29 мая 2012

Вам необходимо добавить явную зависимость между сгенерированным файлом и вашей целью.

Откройте каталог DerivedData в Finder, выберите файл mytest.h и перетащите его в XCode внутри вашего проекта.Обычно я создаю новую группу под названием «Производные файлы» и помещаю в нее такие файлы.

Чтобы легко найти каталог DerivedData, я изменяю настройки проекта, чтобы он относился к проекту каталога (см. «Файл» -> «Настройки проекта»)., вкладка Build).

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

Наконец, поскольку вы действительно хотите скомпилировать этот файл, вы можетехочу переименовать его в .m или .c вместо .h.

Обновление: На самом деле похоже, что вышеописанное не работает все время.Самый надежный способ - использовать фазу сборки вместо правила сборки.

...