XCode4 не связывает недавно скомпилированный статический (зависимый) проект библиотеки - PullRequest
8 голосов
/ 01 июня 2011

У меня есть проект в XCode4 с зависимым проектом (случается, это проект Kal).

Когда я обновляю проект Kal изнутри XCode, затем запускаю родительский проект (это происходит в том же рабочем пространстве, кстати), он выглядит , как XCode компилирует измененный проект Kal, но не 't ссылка на недавно скомпилированный файл libKal.a.

Я использую одну из схем родительского проекта по умолчанию.Из журналов я могу сказать, что при запуске он строит зависимый проект, прежде чем он строит родительский проект.Но единственный способ, которым я могу заставить родительский проект использовать мои изменения, - это если я повторно добавлю продукт libKal.a в качестве библиотеки для связи в разделе «Связать двоичные файлы с библиотеками» родительской цели сборки.

Может быть, подсказки: - Я использую LLVM, - У меня включен флаг -all_load.

Ответы [ 5 ]

0 голосов
/ 23 октября 2013

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

Скажем, у вас есть рабочее пространство с именем Test идва проекта называют TestApplication и TestLibrary.Если они включены в рабочую область как отдельные проекты, вы сможете добавить TestLibrary.a в TestApplication в качестве библиотеки в разделе «Связать двоичные файлы с библиотеками» на этапах построения цели TestApplication, но вы НЕ БУДЕТЕвозможность добавить его в раздел «Целевые зависимости».

Теперь, если вы переместите TestLibrary в качестве подпроекта TestAppliction (просто перетащите его в проект в навигаторе проекта), вы сможетеДобавьте TestLibrary как библиотеку, чтобы связать их с AND в качестве целевой зависимости TestApplication.Добавление его в качестве целевой зависимости гарантирует, что Xcode будет собирать (при необходимости) и связывать библиотеку.

Извините, но я уже давно понял, что так настроил свои собственные проекты, поэтому я могуточно не помню, в какой ситуации библиотека не связана.Я думаю, что это было чем-то вроде этого, так как это был отдельный проект, Xcode не проверял бы, нужно ли его снова строить и просто связывал с предыдущей библиотекой.Хотя я помню, что моя работа до тех пор, пока я не понял это, состояла в том, чтобы просто прикоснуться к файлу в проекте, который требовал сборки.У меня был файл с именем touchMe, который был включен в качестве исходного кода компиляции, если проект библиотеки, к которому я бы прикоснулся перед сборкой.Вы можете сделать то же самое, чтобы увидеть, решит ли это и вашу проблему, если перенос библиотечного проекта в зависимый проект не подходит для вас.

Надеюсь, это поможет.

0 голосов
/ 08 октября 2013

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

0 голосов
/ 04 мая 2012

Проверьте свои схемы.Для приложения, которое зависит от библиотеки, убедитесь, что зависимость строится каждый раз.Я прочитал схему уже должно иметь это обновление, но иногда это не так.Вы можете увидеть пример здесь ...

http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/#configuring_the_projects_scheme

В основном отредактируйте схему для приложения и нажмите на элемент Build в левом верхнем углу.Вы увидите каждую из целей, которая запускается как часть этой сборки.Если вы не видите цель для зависимости, вы можете добавить ее.Затем убедитесь, что ваше приложение указано последним, чтобы сначала были созданы все зависимости.

0 голосов
/ 18 июля 2012

Я могу предложить вам использовать одно рабочее пространство для вашей библиотеки и основных проектов. В схеме основного проекта добавьте цель библиотеки перед вашей основной (чтобы скомпилировать библиотеку перед основной целью) и настройте путь поиска заголовков.

0 голосов
/ 14 апреля 2012

Что если вы попробуете:

  • Clean
  • Перестройка

Это обычно работает для меня в таких случаях ...

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