Xcode 3.1.1 и статические библиотеки - PullRequest
4 голосов
/ 18 сентября 2008

Я опытный пользователь VS.NET и пытаюсь запустить и запустить Xcode 3.1.1.
Вот что я пытаюсь сделать:

Мне бы хотелось, чтобы статическая библиотека ("Lib") имела собственный файл xcodeproj. Я бы выполнил исполняемое приложение («App»), которое использует Lib для ссылки на файл xcodeproj Lib, так что изменения в Lib приводят к повторной привязке App. В идеале я хотел бы иметь возможность редактировать исходные файлы Lib в рабочей области Xcode приложения, чтобы мне не приходилось постоянно задавать вопросы для внесения изменений.

Из онлайновой справки я понял, что могу просто перетащить статический lib xcodeproj в проект моего приложения, и он получит ссылку. Я вижу, что, как только моя статическая lib xcodeproj появится в проекте моего приложения, я могу просто перетащить ее к цели приложения, и она поймет, что приложение зависит от Lib. Это похоже на правильный путь, но пока что дела идут не совсем так, как мне хотелось бы.

Вот мои вопросы:

  1. Кажется, что просто наличие App зависит от Lib, не заставляет App связываться с Lib. Похоже, мне нужно явно перетащить libLib.a из папки Lib в стадию сборки приложения «Link Binary With Libraries». В VS.NET простое указание проекта в качестве зависимости решения добавляет его в строку ссылки. Я просто хочу убедиться, что ничего не пропустил.

  2. Когда я открываю приложение в Xcode и перетаскиваю в него файл Lib.xcodeproj, я не получаю там никаких исходных файлов Lib. Я получаю libLib.a только в папке "Lib.xcodeproj". В VS.NET я могу редактировать исходные файлы Lib прямо здесь и перестраивать его и т. Д., Но при таком подходе в Xcode изменения в Lib.cpp не приводят к перекомпоновке Lib при перекомпоновке приложения. В идеале я хотел бы, чтобы все исходные файлы и цели Lib отображались при перетаскивании Lib.xcodeproj в приложение. Есть ли способ сделать это?

Заранее спасибо за любые ответы!

Ответы [ 4 ]

9 голосов
/ 18 сентября 2008

Вы правы, что создание цели A зависит от цели B (будь то в рамках одного проекта или между проектами) не заставляет цель A связываться с целью B. Вам необходимо четко указать их; это потому, что они являются отдельными понятиями, и у вас могут быть зависимости между целями, которые вы не хотите связать друг с другом - например, инструмент командной строки, который создается целевым C и используется как часть процесса сборки для цели A.

Кроме того, вы правы, что ссылка на проект B из проекта A не позволит вам увидеть исходный код проекта B в окне проекта A. Это потому, что Xcode не имеет той же модели «рабочего пространства», что и Visual Studio и Eclipse; Вы выше намекали на существование «рабочей области, содержащей проект A», но Xcode на самом деле не имеет ничего подобного, просто окно , представляющее проект A.

4 голосов
/ 18 сентября 2008

Откройте проект приложения. Щелкните правой кнопкой мыши цель приложения и выберите «Получить информацию». Затем перейдите на вкладку «Общие» и найдите «Прямые зависимости». Нажмите кнопку (+) (знак плюс), чтобы добавить прямую зависимость. Lib.xcodeproj должен появиться среди списка возможностей для вас. Выберите цель Lib из этого списка.

Это должно привести к тому, что проект Lib должен быть собран (или перестроен) при создании цели приложения.

(Редактирую свой пост сейчас. Я понимаю, что ничего не сказал о пункте № 2 в вопросе. На самом деле я все еще думаю о пункте 2. Я не уверен, возможно ли это или нет.)

0 голосов
/ 13 ноября 2009

Я также новичок в Xcode 3.1, только что поиграл с упомянутыми вами проблемами и обнаружил, что нет проблем относительно вашего второго вопроса. Какое бы приложение вы не использовали для редактирования исходного кода библиотеки зависимостей, ваш основной проект перестроит цель зависимости. Я проверил это:

  1. отредактировал исходный файл библиотеки, от которой зависит ваше приложение, приложением блокнота.
  2. Выбранная ссылка на проект библиотеки зависимостей, щелкните правой кнопкой мыши и выберите «Открыть с помощью Finder», затем выберите нужный исходный файл и отредактируйте его.

Все работает хорошо.

0 голосов
/ 18 сентября 2008

Я также довольно новый пользователь XCode. Большую часть того, что я знаю, я узнал из книги Xcode Джеймса Буканека (ISBN 047175479x). Это старая книга, которая была написана для / с Xcode 2.2, но я считаю, что почти все это по-прежнему применимо ко мне сегодня, и в настоящее время я использую Xcode 3.1

Возможно, вы найдете дешевую подержанную копию, если вам интересно.

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