Может ли xcode передать флаги компиляции зависимой цели из зависимой?
Вот случай, с которым я столкнулся при создании моего Mac-приложения.
Проект имеет три цели: цель A состоит из кода src пользовательского интерфейса и создает конечное приложение; цель B создает тестовую программу командной строки, которая выполняет некоторые модульные тесты (я не использую автоматически сгенерированную цель XXXTests); и цель C состоит из кодов src бэкэнда и создает статическую библиотеку для цели A и цели B, к которой нужно подключиться.
Проблема заключается в том, что для цели B требуется, чтобы цель C создавалась с флагом "-DZS_TEST", а для цели A нужна цель C, создаваемая без этого флага. Итак, как настроить параметры проекта / цели xcode, чтобы мне не приходилось менять какие-либо настройки при переходе от построения цели A и цели B? Потому что изменение настроек сборки приводит к тому, что git сообщает о неразмеченных файлах, что не нужно, потому что я просто хочу создать другую цель.
Мне интересно, может ли xcode переслать флаг от зависимой цели к зависимой цели, тогда я могу позволить B переслать "-DZS_TEST=1" в C и позволить цели A переслать "-DZS_TEST=0" в C.
Или есть лучший способ разделить проект на разные цели?
Я гуглил и нашел много статей, связанных с настройками сборки xcode, но они не разделяют особую потребность этого проекта. Так что спасибо заранее.
2 ответа
Что я делаю, так это настраиваю отдельную конфигурацию, называю ее "Test", скажем, как копию стандартной конфигурации Debug. Поместите свои дополнительные флаги в тестовую конфигурацию в Target C и B, если необходимо
Отредактируйте схему для цели B и запустите Run для создания тестовой конфигурации. Конфигурация передается зависимостям, поэтому их тестовые конфигурации создаются и все должно работать правильно.
В итоге я использую две цели ядра, то есть target c1 и c2, которые используют один и тот же исходный код, но разные флаги компиляции и сборку c1 с определенным ZS_TEST, но c2 нет. Тогда цели A и B зависят от того, что им нужно.