Путь связи фреймворков изменился после того, как проект переместился в другое место
Пожалуйста, взгляните на картинку:
Это моя структура проекта:
- 1 приложение (верхнее)
- 3 фреймворка (создаю сам)
- 1 статическая библиотека стручков какао (нижняя часть)
Когда я cmd+b, все подпроекты будут строить начало от нижнего до верхнего, здесь нет проблем, все в порядке.
- чтобы сослаться/связать фреймворки, я помещаю продукт фреймворка в каждый подпроект /этапы сборки / ссылка Двоичный файл с библиотеками и / этапами сборки / копированием файлов.
Проблема в следующем:
- когда я копирую / перемещаю папку проекта в другое место (например, ~/oldFolder/app в ~/newFolder/app), подпроект не может найти фреймворки, он сообщает о не найденной ошибке, мне нужно заново построить и удалить продукт фреймворка, чтобы связать его, чтобы исправить ошибку.
P. s.: извините за мою бедную английский.
3 ответа:
Вы можете использовать $(SRCROOT), если хотите ссылаться на пути относительно исходного каталога . $(SRCROOT) укажет, где находятся файлы проекта . apple doc
Пример:
Если у вас есть каталог x в папке MyApp, который содержит файл проекта, то папка x может быть переименована в $(SRCROOT)/x. введите это в разделе путь к фреймворкам в настройках сборки для ссылки на вашу библиотеку .
Я публикую подробную информацию о том, как исправить эту проблему на моей стороне здесь:
- В Рамках:
- set " $(SRCROOT)/../строительства" в пункт "в-конфигурации сборки продукции путь" в строй установка Страница;
- shift + cmd+k для очистки сборки фреймворка, затем cmd+b перестроить фреймворк;
- В MyApp
- Добавить "$(SRCROOT)/../build "в пункте" путь поиска фреймворка " на странице настройки сборки;
- перетащите фреймворк из произведения рамочный проект для "связывания двоичных файлов с библиотеками" на странице этапов сборки;
- перетащите фреймворк из продукта проекта фреймворка на страницу "копировать файлы" на этапе сборки (вы можете добавить пункт "копировать файлы" по щелкните в левом верхнем углу страницы этапы сборки);
Пожалуйста, обратите внимание, если вы используете еще один фреймворк в том же проекте, и фреймворк также ссылается на другой, подобный образцу, который я отправил в своем вопросе, вам также нужно выполнить все шаги, как описано выше ( Фреймворк и приложение ).
Еще одна проблема, с которой вы столкнетесь, если вы также используете 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"