Мой случай прост, рабочее пространство с двумя дочерними проектами: одно основное (iOS) приложение и проект, который создает несколько целевых статических библиотек, используемых приложением.
Вот как я настроил сборку:
- указал "путь поиска заголовка пользователя" в основных настройках сборки приложения в расположение проекта библиотеки (через исходное дерево).
- в главном целевом редакторе приложения → фазах сборки → "Связывание двоичных файлов с библиотеками", добавлены библиотеки, которые я хочу использовать.
- в схеме, отметьте "Найти неявные зависимости"
После очистки (и удаления производных данных) сборка связывает меня с этой ошибкой во время сборки основного проекта:
ld: library not found for -lChipmunk
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1
Разумеется, если я посмотрю на вновь созданные производные данные, единственными объектными файлами, которые будут найдены, являются основное приложение, а не библиотеки. Широко распространенный "поиск" для файлов *.o не показывает ничего значимого, поэтому библиотеки не теряются, они определенно не создаются.
Некоторые дополнительные точки:
- когда я спросил об этом на форумах Apple dev, было предложено добавить явные отпечатки в главный редактор Build Phases- > Target Dependencies. Но вы можете добавлять только отпечатки сюда к целевым объектам в одном проекте или подпроектах; в моем случае у меня есть проекты приложений и библиотек как братья и сестры на рабочем месте.
- Если я строю каждую библиотеку вручную перед основной сборкой, все в порядке.
Обновление:
Я только что нашел способ обхода, который заключается в том, чтобы добавить все цели депо в "сборку" основной схемы приложения. Я пробовал это раньше, но не понял, что могу перетащить цели в списке, чтобы получить правильный порядок сборки. Сборка теперь происходит в правильном порядке, как после чистой, так и после изменений в библиотеке или главном источнике приложения.
Я оставляю вопрос здесь, потому что вручную сортировка заказа на сборку, безусловно, не требуется. Должно быть что-то не в порядке с тем, как у меня созданы вещи.