Может ли xcode передавать флаги компиляции зависимой цели от зависимой?

Вот случай, с которым я столкнулся при создании своего приложения для Mac.

У проекта есть три цели: цель A состоит из исходного кода пользовательского интерфейса и создает окончательное приложение; цель 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, но они не разделяют конкретной потребности, как этот проект. Так что спасибо заранее.


person bestOfSong    schedule 15.06.2015    source источник


Ответы (2)


В итоге я использую две цели ядра, то есть цель c1 и c2, которые используют один и тот же исходный код, но разные флаги компиляции, и сборку c1 с определенным ZS_TEST, но c2 нет. Затем цели A и B зависят от того, что им нужно.

person bestOfSong    schedule 20.07.2015

Что я делаю, так это настраиваю отдельную конфигурацию, называю ее «Тест», скажем, как копию стандартной конфигурации отладки. Поместите свои дополнительные флаги в тестовую конфигурацию в Target C и B, если это необходимо.

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

person Gamma Draconis    schedule 31.08.2015