добавление простой библиотеки в проект xcode 4 - PullRequest
6 голосов
/ 08 августа 2011

Я знаю, что это очень простой вопрос, но я боролся с ним некоторое время.Я прочитал несколько тем, но все еще могу найти ответ.

Я пытаюсь добавить эту библиотеку DDMathParser в мой существующий проект.Документация математического анализатора гласит:

"Просто скопируйте подпапку" DDMathParser "в ваш проект, #import" DDMathParser.h ", и все готово."

Я добавил подпапкув мой проект и добавил заголовок "#import" DDMathParser.h "в мой первый контроллер представления. Сначала XCode заявлял, что он не может найти файл. Я воспользовался советом из другого потока и изменил свой заголовок, чтобы включить папку

#import "DDMathParser/DDMathParser.h"

Кажется, Xcode находит папку и файл заголовка, но когда я запускаю тест из документации, такой как

NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]);

Я получаю сообщение об ошибке 'Поток 1: Программа получила sginal: "SIGABRT" 'Я вижу в файле примера DDMathParser, что есть цель, мне интересно, если это моя проблема.

Чтобы прояснить вопрос, я пытаюсь добавить DDMathParser библиотека для простого контроллера представления и запуска staement NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); Любая помощь / разъяснения при этом будет принята с благодарностью.

Ответы [ 2 ]

12 голосов
/ 08 августа 2011

Во-первых, пожалуйста, не добавляйте код DDMathParser в свой проект через копию подпапки. Это затруднит получение любых будущих обновлений кода и, как правило, является не очень хорошим подходом для включения внешнего кода в ваши проекты.

Вместо этого вы должны добавить git repo в качестве подмодуля вашего проекта (вы используете git, верно?) И импортировать соответствующие файлы в ваш проект. Вот пошаговое решение:

  1. Добавьте репозиторий DDMathParser в качестве подмодуля в ваш проект. Вот инструкции о том, как добавить субмодуль в директорию вашего проекта. Посмотрите на этот ответ, но для краткости вы будете вводить эту команду из терминала в корневом каталоге вашего проекта: git submodule add https://github.com/davedelong/DDMathParser.git External/DDMathParser. Это создаст новый подкаталог с именем External для корневого каталога вашего проекта, а внутри External будет скопирован проект DDMathParser.
  2. Добавьте каталог DDMathParser в свой проект. Он будет найден в каталоге <Your Root Project Dir>/External/DDMathParser/DDMathParser. Обязательно установите флажок «Добавить к целям» и , а не , чтобы установить флажок «Копировать элементы».
  3. Добавьте #import "DDMathParser.h" к вашему контроллеру представления.

DDMathParser теперь должен работать так, как вы ожидаете. Если автор выходит с обновлением кода, вы можете просто выполнить следующую команду из терминала, чтобы извлечь последние обновления из github: git submodule update.

Примечание. Я создал новый проект с нуля, выполнил эти шаги и включил ваш пример NSLog(), чтобы убедиться, что проблем нет.

0 голосов
/ 17 февраля 2014

Я тоже следовал этим шагам, пока не смог заставить это работать. Предлагаемый метод имеет некоторые недостатки.

  1. Как это было у парня до меня --- Вы приносите только ИСТОЧНИКИ DDMathParser и скомпилируйте их как часть вашей цели. Это связывает использовать те же настройки сборки, версию SDK и развертывание системная версия как автор DDMathParser. Примеры:

    • не использовал ARC в моей цели - теперь я должен.
    • Я намеревался использовать MacOS 10.8 SDK в своем проекте (по многим причинам), но я получил странную ошибку компиляции ARC в одном источнике DDMathParser, которая исчезла только при переходе на SDK 10.9 (версия, использованная автором в его примерах и документах). ).
    • Я ДОЛЖЕН предоставить свое приложение для MacOS 10.8 и выше, теперь я не уверен, что оно будет работать
  2. Я не знаю, что произойдет, если я перенесу свое родительское репо на сервер, а другой друг потянет его. Получит ли он репозиторий DDMathParser автоматически? Как? Он должен иметь доступ к нему! Схема не кажется мне полной.

Я предложу помочь автору упаковать его DDMathParser в качестве фреймворка, и тогда вы сможете импортировать ФАЙЛ ПРОЕКТА DDMAthParser в ваш проект - не источники, а просто связать с продуктом проекта DDMathParser. (частная структура). Кажется, намного приятнее. фреймворк может быть скомпилирован с использованием настроек автора, и мы просто получаем красиво упакованный бинарный файл.

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