Сборка JUCE для iOS не имеет цели

У меня есть код для плагина VST, и мне нужно перенести некоторые из них в приложение для iOS.

Я попытался собрать версию для OSX и использовать lib.a, и это не сработало. Когда я открываю его версию для iOS, Xcode показывает, что в нем отсутствует тагрет.

введите здесь описание изображения

Если я скопирую код прямо в Xcode со всеми модулями JUCE и установлю пути поиска заголовков, я получу ошибки компиляции для таких вещей, как no such type for String

После этого последнего обновления JUCE Xcode будет выдавать те же ошибки, пока я не обновлю сам файл JUCE, поэтому я думаю, что настройки сборки JUCE или конфигурация новой версии делают что-то по-другому. Как я могу получить этот код в другом проекте Xcode, чтобы я мог его использовать?

Могу ли я скомпилировать его как библиотеку и использовать объекты через шапку?


person some_id    schedule 29.04.2016    source источник


Ответы (1)


JUCE предназначен для включения в проекты, созданные Introjucer/Projucer (инструмент управления проектами JUCE). Без этого правильные определения препроцессора не будут настроены.

Если вам действительно нужно включить исходный код JUCE в свою программу, вы можете вручную настроить эти определения препроцессора (взгляните на заголовок AppConfig.h из сгенерированного проекта, чтобы получить представление о том, сколько работы это потребует), но вы действительно пошли бы против нормального "пути JUCE".

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

Добавление исходных файлов JUCE (т. е. .cpp и .mm) для компиляции напрямую в проект приведет к ошибкам компиляции, поскольку их необходимо компилировать в строго определенном порядке, который определяется заголовочным файлом (файлы заголовков #include определенные файлы реализации после настройки их зависимостей).

Короче говоря, если вы вообще можете, я бы посоветовал создать проект с помощью Projucer и добавлять другие исходные файлы по мере необходимости, а не наоборот.

person OMGtechy    schedule 29.04.2016
comment
Правда, это лучший вариант. Спасибо! - person some_id; 29.04.2016
comment
Есть ли причина, по которой версия для iOS не может быть собрана? - person some_id; 29.04.2016
comment
@ Helium3, пожалуйста, уточните - JUCE очень хорошо работает для iOS :) - person OMGtechy; 29.04.2016
comment
Таким образом, когда я открываю версию iOS от Projucer, цели нет. На самом деле я не хочу добавлять весь код проектов iOS в версию сборки iOS из выходных данных Projucer и добавлять цели вручную и т. д. Я не знаю, насколько это надежно в будущем. В настоящее время мне просто нужно добавить код C++, который частично зависит от JUCE, в существующий проект iOS. Другое дело, что я разрабатываю плагин VST/AU, который использует JUCE для переносимости, но хочет иметь возможность извлекать код С++ в проект iOS. Для этого кода нет большой зависимости от JUCE, может быть, несколько массивов и небольшие биты. - person some_id; 29.04.2016
comment
Поэтому вместо того, чтобы изменять отдельную версию только для этого, я хотел бы легко скопировать/заменить этот код и скомпилировать. Вы упомянули файл AppConfig, я просмотрел множество определений и т. д. Есть ли что-то еще, что необходимо для правильной сборки? Если я копирую папку JuceLibraryCode, я получаю странные ошибки, такие как использование необъявленного идентификатора «Кнопка со стрелкой», имя неизвестного типа String, имя неизвестного типа Color - person some_id; 29.04.2016
comment
@ Helium3 см. обновленный ответ :) Папка JuceLibraryCode обычно представляет собой просто ссылку на другой набор файлов, которые должны быть включены в заголовки (я знаю, это странно). - person OMGtechy; 05.05.2016
comment
Спасибо, но мне пришлось отказаться от JUCE для проекта iOS, хотя он по-прежнему отлично подходит для плагинов :) - person some_id; 05.05.2016