Xcode, как использовать несколько целей, все с одинаковым всем, кроме PCH и файла информационного списка

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

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

В основном мы хотим иметь это:

  • MyApp (базовая цель)
  • MyAppDev (переопределяет «MyApp», но с другими макросами pch/preprocessor)
  • MyAppQA (также переопределить)
  • MyAppProduction (также переопределить)

И мы хотим, чтобы мы просто добавили все наши исходные файлы в «MyApp» и получили базовый список макросов препроцессора, а также некоторые из них, специфичные для каждой сборки.

Тогда у нас будут схемы, которые соответствуют и строят каждую цель:

  • MyAppDevScheme
  • MyAppQAScheme
  • MyAppProductionScheme

Возможно ли это с Xcode?

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

Буду рад, если кто-нибудь объяснит это!

Спасибо!!


person jpswain    schedule 10.10.2012    source источник


Ответы (1)


Попробуй это:

В настройках вашего проекта (Info) продублируйте конфигурацию сборки Release или Debug. Затем настройте параметры сборки для своей цели, добавив различные переменные препроцессора или изменив имя файла PCH.

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

А для сборки xcodebuild просто укажите либо -configuration, либо -scheme, как вам нравится.

Это почти так же, как Apple рекомендует создавать для магазина приложений.

person Dmitry Shevchenko    schedule 10.10.2012
comment
Круто, я вижу, о чем ты говоришь. Все мои конфигурации говорят, что конфигурация не установлена. Как их добавить? - person jpswain; 11.10.2012
comment
Хм, не уверен насчет этого, где именно вы его видите? - person Dmitry Shevchenko; 11.10.2012
comment
В Project › Info › Configurations у вас есть список имен конфигураций с No Configurations Set после каждого из них. Но потом я понял, что это в Target > Build Settings > Preprocessor Macros, для #define vars, конечно, а затем Target > Build Settings > Packaging > Info.plist File для пользовательского имени сборки для каждого файла. Еще раз спасибо! Мы давно хотели улучшить автоматизацию нашего проекта! - person jpswain; 12.10.2012