Что мне нужно сделать, чтобы заставить cocoapods собираться с C ++? - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь собрать библиотеку для распространения через Cocoapods. Библиотека написана в основном на Objective C, но включает в себя несколько файлов C ++. Ни один из заголовков C ++ не является частью публичного API библиотеки. Библиотека прекрасно работает в XCode, и я могу распространять ее в виде фреймворка, но другим, вероятно, легче будет потреблять стручок, верно?

Это моя первая попытка построить кокопод, поэтому я могу делатьчто-то явно не так.

Когда я запускаю pod lib lint или пытаюсь создать демонстрационное приложение, которое зависит от модуля, я получаю сообщения об ошибках, которые указывают на то, что система сборки вообще не понимает C ++.

в заголовочном файле C ++:

class CGuard {
> unknown type name 'class'; did you mean 'Class'?

в другом заголовочном файле C ++:

template<typename T>
class CContexts {
> unknown type name 'template'

Мой файл psspec включает

spec.xcconfig = {
  'CLANG_CXX_LANGUAGE_STANDARD' => 'c++11',
  'CLANG_CXX_LIBRARY' => 'libc++'
}
spec.library = "c++"

Что еще можно сделать, чтобы указать системе сборки использовать компилятор C ++?

1 Ответ

0 голосов
/ 26 октября 2019

Похоже, ключ добавлял private_header_files записей для удаления заголовков C ++ из среды, которую экспортирует Cocoapods.

Хотя документально подтверждено, что Cocoapods включает только файлы из public_header_files в сгенерированный зонтик модулязаголовок, похоже, что в каждый раздел subspec включены все заголовки, если этот раздел subspec не имеет собственной записи public_header_files.

Все файлы C ++ были скомпилированы в subspecраздел, позволяющий мне использовать различные настройки компилятора, поэтому запись private_header_files должна быть также внутри этого раздела subspec.

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