xcodebuild - как определить макрос препроцессора? - PullRequest
21 голосов
/ 25 апреля 2010

Как определить макрос препроцессора при использовании xcodebuild?

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

Ответы [ 2 ]

35 голосов
/ 26 ноября 2012

Вы передаете GCC_PREPROCESSOR_DEFINITIONS в командной строке xcodebuild.

Помните, что аргумент будет переоценен для разбиения слов по типу оболочки и обработки кавычек, поэтому вы должны быть осторожны, особенно когда ваши значения макросов не просто 1 s (например, литералы NSString).

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

Следующий код помещает ваши определения в хороший массив bash, а затем расширяет массив в командной строке xcodebuild таким образом, чтобы содержимое оболочки было хорошо экранировано:

defines=( TESTING=1 'IWISH_HOST=@"http://192.168.0.101:8080"' )

xcodebuild -verbose -scheme "MyAppScheme" \
    GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS '"$(printf '%q ' "${defines[@]}")"
18 голосов
/ 25 апреля 2010

Cmd + I на проекте, чтобы открыть диалоговое окно Информация. Затем на вкладке «Сборка» найдите параметр «Макросы препроцессора». Добавьте макросы туда.

... Где вы можете найти имя параметра GCC_PREPROCESSOR_DEFINITIONS, чтобы вы могли добавить

GCC_PREPROCESSOR_DEFINITIONS="foo=bar"

к аргументам xcodebuild.

...