Изменение источника статической библиотеки требует очистки и сборки в xcode 4 - PullRequest
18 голосов
/ 01 июня 2011

У меня есть проект iOS, который построен на фреймворковом проекте, который мы используем в разных проектах iOS. Фреймворк включен в проект приложения как проект xcode. Проект приложения зависит от цели построения статической библиотеки фреймворка. (Подобно большинству библиотек с открытым исходным кодом, таких как three20)

Проблема в том, что если я что-то изменяю в исходном коде фреймворка, статическая библиотека не перестраивается при сборке и запуске проекта приложения.

Выполнение очистки с последующей сборкой и запуском изменений корректно компилируется. Выполнение перестройки каждый раз, когда я что-то изменяю в рамках, не является хорошим решением по понятным причинам.

Есть ли параметр, который мне нужно изменить, чтобы xcode правильно идентифицировал мой фреймворк как грязный и соответственно его скомпилировал?

Я использую xcode 4.0.2

Ответы [ 3 ]

22 голосов
/ 14 июня 2011

Это ошибка в xcode 4.0.2 (может быть исправлена ​​в будущей версии).От https://devforums.apple.com/thread/91711?start=25&tstart=0:

  1. Установить статические библиотеки в проекте в разделе Frameworks для: Относительно продуктов сборки
  2. Закрыть XCode
  3. Редактировать project.pbxproj и удалитьвсе компоненты пути статической библиотеки, так что остается только имя файла, как здесь (важной частью является «путь = libLibrary.a»)

    A74F787413566130000D0AFC / * libLibrary.a * / = {isa = PBXFileReference;lastKnownFileType = archive.ar;путь = libLibrary.a;sourceTree = BUILT_PRODUCTS_DIR;};

1 голос
/ 19 декабря 2012

Добавьте шаг сценария, в котором вы установите свой файл main.m как измененный

#Force dependencies' relink
touch MyProject/main.m
0 голосов
/ 01 июня 2011

Возможно, вам не хватает зависимости между вашей целью и статической библиотекой.

Чтобы добавить зависимость:

  1. перетаскивание статического проекта библиотеки Xcode в ваш проект

    1b. добавьте библиотеку в фреймворки вашего приложения (я так понимаю, она уже есть);

  2. выберите цель; показать панель информации;

  3. перейдите в Зависимости, нажмите «+», затем выберите статическую библиотеку.

Эти инструкции действительны для Xcode 3.2.x, но я надеюсь, что на основе этого вы легко сможете найти выход из этого с Xcode 4.

EDIT: Для Xcode 4, проверьте это и это (отредактированная часть вопроса для обходного пути).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...