Изменение источника статической библиотеки требует очистки и сборки в xcode 4
У меня есть проект iOS, который построен на проекте фреймворка, который мы используем в разных проектах iOS. Структура включена в проект приложения как проект xcode. Проект приложения зависит от цели построения статической библиотеки framework. (Подобно большинству библиотек с открытым исходным кодом, таких как три20)
Проблема в том, что если я что-то изменил в исходном коде рамки, статическая библиотека не перестраивается, когда я создаю и запускаю проект приложения.
Выполнение очистки, за которым следует сборка и запуск изменений, скомпилированы правильно. Выполнение перестройки каждый раз, когда я что-то меняю в рамках, не является хорошим решением по понятным причинам.
Есть ли параметр, который мне нужно изменить, чтобы xcode правильно идентифицировал мою инфраструктуру как загрязненную и строит ее соответственно?
Я использую xcode 4.0.2
Ответы
Ответ 1
Это ошибка в xcode 4.0.2 (может быть исправлена в будущей версии). Из https://devforums.apple.com/thread/91711?start=25&tstart=0:
- Установить статические библиотеки в проекте,
в рамках Рамок: относительно
Создание продуктов
- Закрыть XCode
-
Измените project.pbxproj и удалите все компоненты пути статической библиотеки, чтобы осталось только имя файла filename (важная часть - path = libLibrary.a)
A74F787413566130000D0AFC/* libLibrary.a */= {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libLibrary.a; sourceTree = BUILT_PRODUCTS_DIR; };
Ответ 2
Возможно, вам не хватает зависимости между вашей целью и статической библиотекой.
Чтобы добавить зависимость:
-
перетащите/удалите проект Xcode статической библиотеки в своем проекте
1b. добавьте библиотеку в свои рамки приложения (я понимаю, что она уже существует);
-
выберите цель; показать панель информации;
-
перейдите в Зависимости, нажмите "+", затем выберите свою статическую библиотеку.
Эти инструкции действительны для Xcode 3.2.x, но я надеюсь, что на основе этого вы можете легко найти выход из этого с помощью Xcode 4.
EDIT:
Для Xcode 4 отметьте this и this (отредактированная часть вопроса для обходного пути).
Ответ 3
Добавьте шаг script, где вы установили файл main.m как измененный
#Force dependencies' relink
touch MyProject/main.m