Я хочу создать фреймворк iOS для популярной библиотеки C.
Моя текущая настройка:
Это то, что я делаю:
- Создайте библиотеку для архитектур симуляторов iOS и iPhone
- Объедините два архива
.a
файлов в одну толстую библиотеку, используя lipo
- Используйте
libtool -static -o
, чтобы получить финальную библиотеку
На этом этапе у меня есть двоичный файл и куча файлов заголовков. В xcode:
Отбросьте двоичный файл (с шага 3) и убедитесь, что он связан под: Target > General > Framework and Libraries
и Target > Build Phases > Link Binary with Libraries
Я копирую все файлы заголовков из C библиотеки и поместите их в каталог Dependencies/myClibrary/include/
. Каталог include
содержит главный файл заголовка myClibrary.h
, который включает несколько файлов заголовков из ./abstract/*.h
.
На верхнем уровне каталога проекта xcode я также создаю module.map
файл с содержимым:
module MyWrapperFramework [system] {
header "Dependencies/myClibrary/include/myClibrary.h"
export *
}
Добавить все файлы заголовков в xcode и для каждого файла заголовка под Target Membership
изменить значение с project
на public
.
Сборка
Тестирование фреймворка в приложении
Я могу создать фреймворк с указанными выше настройками. Однако, когда я хочу протестировать его в тестовом приложении Objective C, я импортирую фреймворк и вызываю функции, связанные с myClibrary
. При создании приложения я получаю сообщение об ошибке:
'myClibrary/abstract/headername.h' file not found
Вышеупомянутая ошибка возникает из главного файла заголовка myClibrary
myClibrary
.
Большая часть учебника, который я смог найти имеет дело с C библиотеками, имеющими один файл заголовка. Как я могу создать фреймворк iOS из библиотеки C, содержащей файлы вложенных заголовков?
В случае, если вложенные файлы заголовков не являются здесь основной проблемой, что я делаю не так?