Вопрос или проблема
Как я могу добавить свои рекурсивные заголовочные файлы в файл 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>
, вам нужно:
- Убедиться, что ваш путь к заголовочным файлам правильно настроен в
public_header_files
. - Использовать
USER_HEADER_SEARCH_PATHS
для указания CocoaPods, где искать заголовки. - Проверить структуру папок, чтобы убедиться, что заголовочные файлы находятся на ожидаемых местах.
Следуя этим шагам, вы сможете успешно импортировать заголовки в своем проекте.