Добавить рекурсивный заголовок в podspec

Вопрос или проблема

Как я могу добавить свои рекурсивные заголовочные файлы в файл podspec? Я хочу импортировать заголовок из папки так: #import <folder/file.h>, а не так: #import <file.h>. Как я могу это сделать?

Я пробовал так:

 s.public_header_files   = [
    'Classes/**/*.h'
]

И это работает, если я использую #import <file.h>, но не работает, если я использую #import <folder/file.h>.

Также пробовал это:

s.pod_target_xcconfig = {'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/.."' }

Ответ или решение

Чтобы добавить рекурсивные заголовочные файлы в файл podspec, необходимо правильно настроить параметры конфигурации, чтобы CocoaPods знал, как обрабатывать пути к заголовкам. Если вы хотите использовать конструкции вида #import <folder/file.h>, это подразумевает, что вы работаете с пространства имен, и ваши заголовочные файлы должны быть организованы соответствующим образом.

Основной процесс добавления рекурсивных заголовков в podspec

Ваша конечная цель — сделать так, чтобы заголовки можно было импортировать, используя структуру <folder/file.h>. Это требует правильной настройки public_header_files и изменения конфигураций в podspec. Рассмотрим несколько шагов, которые помогут достичь этой цели.

1. Настройка public_header_files

Вы уже пробовали использовать следующую строку:

s.public_header_files = [
    'Classes/**/*.h'
]

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

2. Настройка pod_target_xcconfig

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

s.pod_target_xcconfig = {
    'USER_HEADER_SEARCH_PATHS' => '"${SRCROOT}/Classes"',
}

Это говорит CocoaPods, что он должен искать заголовки в директории Classes, что может помочь в импорте заголовков через #import <folder/file.h>.

3. Пример полного конфигурационного файла podspec

В этом примере показано, как может выглядеть ваш файл podspec:

Pod::Spec.new do |s|
  s.name                  = 'MyLibrary'
  s.version               = '0.1.0'
  s.summary               = 'A short description of MyLibrary.'
  s.homepage              = 'http://example.com/MyLibrary'
  s.license               = { :type => 'MIT', :file => 'LICENSE' }
  s.author                = { 'YourName' => 'your.email@example.com' }
  s.source                = { :git => 'http://example.com/MyLibrary.git', :tag => s.version.to_s }

  s.ios.deployment_target = '10.0'

  s.source_files          = 'Classes/**/*.{h,m}'
  s.public_header_files   = 'Classes/**/*.{h}'

  s.pod_target_xcconfig = {
    'USER_HEADER_SEARCH_PATHS' => '"${SRCROOT}/Classes"',
  }

  # Если у вас есть другие настройки, добавьте их ниже
end

4. Проверка структуры проекта

Убедитесь, что структура каталогов в вашем проекте подготовлена должным образом. Например:

MyLibrary
├── Classes
│   ├── folder
│   │   └── file.h
│   ├── otherfile.h
│   └── myclass.m

С такой структурой использование #import <folder/file.h> должно работать корректно, когда все шаги выполнены.

Заключение

Подводя итог, чтобы добавить рекурсивные заголовки в файл podspec и сделать их доступными через #import <folder/file.h>, вам нужно:

  1. Убедиться, что ваш путь к заголовочным файлам правильно настроен в public_header_files.
  2. Использовать USER_HEADER_SEARCH_PATHS для указания CocoaPods, где искать заголовки.
  3. Проверить структуру папок, чтобы убедиться, что заголовочные файлы находятся на ожидаемых местах.

Следуя этим шагам, вы сможете успешно импортировать заголовки в своем проекте.

Оцените материал
Добавить комментарий

Капча загружается...