Путь связи фреймворков изменился после того, как проект переместился в другое место


Пожалуйста, взгляните на картинку: Введите описание изображения здесь

Это моя структура проекта:

  1. 1 приложение (верхнее)
  2. 3 фреймворка (создаю сам)
  3. 1 статическая библиотека стручков какао (нижняя часть)

Когда я cmd+b, все подпроекты будут строить начало от нижнего до верхнего, здесь нет проблем, все в порядке.

  • чтобы сослаться/связать фреймворки, я помещаю продукт фреймворка в каждый подпроект /этапы сборки / ссылка Двоичный файл с библиотеками и / этапами сборки / копированием файлов.

Проблема в следующем:

  • когда я копирую / перемещаю папку проекта в другое место (например, ~/oldFolder/app в ~/newFolder/app), подпроект не может найти фреймворки, он сообщает о не найденной ошибке, мне нужно заново построить и удалить продукт фреймворка, чтобы связать его, чтобы исправить ошибку.
Это слишком глупо и тяжело работать с другими людьми, кто-нибудь может помочь?

P. s.: извините за мою бедную английский.

Добавить ошибку pic: Введите описание изображения здесь

3 6

3 ответа:

Вы можете использовать $(SRCROOT), если хотите ссылаться на пути относительно исходного каталога . $(SRCROOT) укажет, где находятся файлы проекта . apple doc

Пример:

Если у вас есть каталог x в папке MyApp, который содержит файл проекта, то папка x может быть переименована в $(SRCROOT)/x. введите это в разделе путь к фреймворкам в настройках сборки для ссылки на вашу библиотеку .

Все это сводится к тому, что вы не можете изменить расположение уже импортированных фреймворков, верно? Это пример с FBSDKCoreKit.рамки. Если бы я хотел изменить расположение папки, мне пришлось бы изменить относительный путь. Нажмите на значок папки рядом с именем и выберите новое расположение

Введите описание изображения здесь

Я публикую подробную информацию о том, как исправить эту проблему на моей стороне здесь:

  • В Рамках:
    1. set " $(SRCROOT)/../строительства" в пункт "в-конфигурации сборки продукции путь" в строй установка Страница;
    2. shift + cmd+k для очистки сборки фреймворка, затем cmd+b перестроить фреймворк;
  • В MyApp
    1. Добавить "$(SRCROOT)/../build "в пункте" путь поиска фреймворка " на странице настройки сборки;
    2. перетащите фреймворк из произведения рамочный проект для "связывания двоичных файлов с библиотеками" на странице этапов сборки;
    3. перетащите фреймворк из продукта проекта фреймворка на страницу "копировать файлы" на этапе сборки (вы можете добавить пункт "копировать файлы" по щелкните в левом верхнем углу страницы этапы сборки);

Пожалуйста, обратите внимание, если вы используете еще один фреймворк в том же проекте, и фреймворк также ссылается на другой, подобный образцу, который я отправил в своем вопросе, вам также нужно выполнить все шаги, как описано выше ( Фреймворк и приложение ).


Еще одна проблема, с которой вы столкнетесь, если вы также используете cocoapods в своем проекте, как мой пример: после того, как вы сделали все шаги выше, XCode ответит на ошибку в вашем проекте фреймворка, как:

Ld: фреймворк не найден Pods_xxx. framework

Clang: error: команда компоновщика завершилась ошибкой с кодом выхода 1 (Используйте-v, чтобы увидеть вызов)

" xxx " должно быть именем вашего рамочного проекта. Чтобы исправить это, вам просто нужно удалить Pods_xxx. framework в вашем проекте / общие / связанные фреймворки и библиотеки . Ошибка исчезнет после перестроения проекта. здесь вы можете найти детали этой проблемы.

P. s.: платформа Pods_xxx.framework появится в General / Linked Framework and Libraries после установки pod, поэтому вам нужно удалить ее снова, если вы выполните команду "pod install"