Как мне получить доступ к макросу, определенному на моем ПК, из библиотеки Cocopods?

Контекст

У нас большой проект, поэтому приложение отделено от какого-то общего кода. Каждый идет в своем собственном репо, и приложение использует общий код в качестве библиотеки через Cocoapods.

Ситуация

Теперь нам нужно переключить некоторые очень специфические функции, содержащиеся в файле lib. Но условие включения/отключения — это МАКРО, определенный в файле application-prefix.pch (знаю, не круто).

Проблема

Код в lib (включенный как Pod) не видит MACRO, определенный в файле pch. Таким образом, мы не можем переключить это поведение.

Подведение итогов

Единственная альтернатива, которую я видел, — добавить хук после установки в наш подфайл, но, похоже, он в основном работает с МАКРОСами, определенными в настройках сборки; в то время как в этом случае MACRO определяется в файле pch. И я действительно очень не хочу добавлять значения в библиотеку или в подфайл.

Буду очень признателен за любой совет или идею, чтобы указать мне в правильном направлении!


person Andres C    schedule 16.06.2015    source источник
comment
Привет. Нашли решение?   -  person iOS Dev    schedule 24.11.2016
comment
@RaduMatei, если я правильно помню, в итоге мы дублировали определения для каждого проекта... так грустно :(   -  person Andres C    schedule 24.11.2016


Ответы (1)


Невозможно использовать макрос проекта приложения в исходном коде Cocoapod — это связано с тем, что вся цель модуля будет построена еще до того, как цель приложения начнет сборку, поэтому модуль не может знать о макросе. .

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

Другой, более чистый способ: спроектируйте код модуля таким образом, чтобы он мог работать с или без конкретной функциональности, которую вы хотите активировать (например, с помощью логического флага). Затем, в зависимости от значения макроса в приложении, выберите передачу этого флага в код модуля как true или false.

person Noah Gilmore    schedule 16.11.2018