Как правильно настроить рабочие пространства Xcode 4 для сборки зависимости, когда это необходимо?

Мой случай прост, рабочая область с двумя родственными проектами: одно основное (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, это было Было предложено добавить явные зависимости в основной целевой редактор Build Phases-> Target Dependencies. Но вы можете добавлять здесь значения только к целям в том же проекте или подпроектах; в моем случае у меня есть проекты приложений и библиотек как братьев и сестер на рабочем месте.
  • если я создаю каждую библиотеку вручную перед основной сборкой, все в порядке.

Обновление:

Я только что нашел обходной путь, который состоит в том, чтобы добавить все цели deps в часть «build» основной схемы приложения. Я пробовал это раньше безуспешно, но так и не смог Я понял, что могу перетаскивать цели по списку, чтобы получить правильный порядок сборки. Сборки теперь выполняются в правильном порядке, как после очистки, так и после изменений в библиотеке или основном источнике приложения.

Я оставляю вопрос здесь, потому что сортировка порядка сборки вручную, безусловно, не требуется. Должно быть что-то не так с тем, как я все устроил.

36
задан Cœur 9 July 2019 в 08:04
поделиться