Я строю частный Cocoapod для iOS, и сталкиваюсь с проблемами с некоторым кодом C ++. Проект прекрасно работает в XCode, но когда я пытаюсь запустить pod lib lint MyProjectName.podspec
Я получаю следующую ошибку:
— ОШИБКА | xcodebuild: /path/to/aheader.h:2:10: ошибка: файл ‘string’ не найден
Заголовок имеет следующую первую строку:
#include <string>
В поисках возможных решений я добавил следующее в podspec (на основе CocoaPods: связь с символами C ++, определенными в libPods.a)
s.source_files = "MyProjectName/**/*.{swift,c,m,h,mm,cpp,plist}"s.library = 'c++'
s.xcconfig = {
'CLANG_CXX_LANGUAGE_STANDARD' => 'c++11',
'CLANG_CXX_LIBRARY' => 'libc++'
}
Но это не имело никакого значения для ошибки. Другое предложение, которое я видел, было «использовать оболочку», но этот фрагмент кода (который является сторонним IP, который я не могу перенести на Objective C) уже использует оболочку.
Как я могу успешно построить модуль, смешав Objective C и C ++ вместе со Swift? Любые (не нулевые) указатели будут оценены.
Мне пришлось просто переименовать расширение заголовка C ++ в .hpp, чтобы оно не было включено по умолчанию в фильтр source_files. Это решило проблему, поскольку оболочка включала заголовок. Сообщение об этом на случай, если кто-то столкнется с той же проблемой.
Обновление: Нет, просто позволяет создавать приложение, но использование модуля все еще не работает.
Других решений пока нет …