Вы передаете 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[@]}")"