xcodebuild ACTIVE_COMPILATION_CONDITIONS не переопределяет ACTIVE_COMPILATION_CONDITIONS цели
Мы пытаемся использовать xcodebuild для создания наших фреймворков вместо использования кнопок ручного запуска Xcode IDE. Проблема в том, что в нашей структуре мы используем ACTIVE_COMPILATION_CONDITIONS, у которых есть несколько значений. Эти значения затем используются для проверки во время выполнения, интегрирована ли конкретная структура, например, проверка Sentry:
#if SENTRY_AVAILABLE
import Sentry
#endif
Проблема в том, что для некоторых сборок нам нужно переопределить настройки нашего проекта, в частности ACTIVE_COMPILATION_CONDITIONS. Однако после успешного выполнения следующего сценария Xcode по-прежнему не отменяет предоставленный нами ACTIVE_COMPILATION_CONDITIONS с определенным в проекте.
Сценарий:
xcodebuild -workspace project.xcworkspace -scheme SDKNR1 ONLY_ACTIVE_ARCH=NO
EXCLUDED_ARCHS=arm64 ACTIVE_COMPILATION_CONDITIONS=SENTRY_AVAILABLE -configuration
release -derivedDataPath $PROJECT_DIR/../simulators/SDKNR1 -sdk iphonesimulator
ENABLE_BITCODE=YES BITCODE_GENERATION_MODE=bitcode OTHER_CFLAGS="-fembed-bitcode" clean build
Как видите, мы определяем ACTIVE_COMPILATION_CONDITIONS = SENTRY_AVAILABLE, однако он не переопределяет настройки целевого проекта (SDKNR1). Предположим, в SDKNR1 нет ACTIVE_COMPILATION_CONDITIONS. Мы ожидали, что команда xcodebuild переопределит целевое значение ACTIVE_COMPILATION_CONDITIONS и будет включать SENTRY_AVAILABLE
Приветствовал бы любые идеи, а может быть, это невозможно?
1 ответ
Правильный ключ настройки сборки - SWIFT_ACTIVE_COMPILATION_CONDITIONS.
Вы можете дважды проверить это, используя команду и убедившись, что ключ существует:
xcodebuild -showBuildSettings <project/scheme/target/configuration flags>