Указание конфигурации подпроекта в XCode - PullRequest
13 голосов
/ 23 октября 2009

У меня есть проект XCode (A), ссылающийся на другой проект (B). По умолчанию (насколько я понимаю) XCode неявно создает конфигурацию для зависимости B, которая соответствует конфигурации цели A (например, «Отладка»). Но что, если я хочу, скажем, A построить как «Debug», а B построить как «Release»? Как мне указать это в XCode?

Ответы [ 3 ]

5 голосов
/ 23 октября 2009

Я не знаю ни одного легкого подхода, но вы можете грубо форсировать его, вызывая xcodebuild напрямую для зависимости с фазой сборки «Run Script».

Я знаю, что это был всего лишь пример, но если ваша реальная цель состоит в том, чтобы подпроект был сборкой Release (без символов), то вы можете получить лучший опыт, просто встроив подпроект в библиотеку или среду и проверка полученного двоичного файла в вашей системе контроля версий. Всякий раз, когда у меня есть часть системы, которая редко изменяется и для которой я не хочу отладочных символов, я продолжаю собирать ее как статическую библиотеку и проверяю ее. Я часто иду вперед и перемещаю код в другое место файл README с .a, в котором указано, где находится код и как он был построен). По моему опыту, это экономит время при сборке и оформлении заказа и неоценимо для крупных проектов.

3 голосов
/ 15 февраля 2013

Это может помочь: если конфигурация проекта A не найдена, Xcode создаст конфигурацию Release как запасной вариант (или, возможно, первую конфигурацию списка).

Затем вы можете «форсировать» ссылку, используя этот совет: Конфигурация пользовательской сборки XCode вызывает «библиотека / файл не найден» для статических библиотек

3 голосов
/ 24 октября 2009

Да, это не поддерживается Xcode; когда вы строите цель, она создает одну конфигурацию из себя и из всех зависимых целей.

Обходной путь, как упоминал Роб, состоит в том, чтобы иметь зависимую цель, которая является типом Aggregate Target, которая включает одну фазу сборки Run Script, которая просто вызывает xcodebuild -configuration Release (или что-то еще).

...