В настройках сборки XCode существует три разных пути поиска:
- Путь к поиску в каркасе
- Путь поиска заголовка
- Путь поиска в библиотеке
Может ли кто-нибудь уточнить, что делают эти пути и для чего они используются?
В настройках сборки XCode существует три разных пути поиска:
Может ли кто-нибудь уточнить, что делают эти пути и для чего они используются?
Путь поиска в каркасе: где искать frameworks (.framework
bundles) в дополнение к путям системных фреймворков. Не очень сильно используется в iOS-разработке, официально не существует инфраструктур iOS для разработчиков.
В Mac-разработке он автоматически устанавливается, если вы перетаскиваете стороннюю структуру в проект. В противном случае просто установите его в каталог контейнера, в котором вы сохранили фреймворк.
В xcconfig
файлах вы используете эту переменную:
FRAMEWORK_SEARCH_PATHS = "/path/to/frameworks/container/directory"
Путь поиска заголовка: где искать файлы заголовков (.h
files) в дополнение к системным путям. Обычно вам это нужно, если вы используете стороннюю библиотеку. Установите его в каталог, в котором у вас есть файлы заголовков. Если вы используете каталог для включения заголовка (пример: #import "mylibrary/component.h"
), установите его в родительский каталог.
В xcconfig
файлах вы используете эту переменную:
HEADER_SEARCH_PATHS = "/path/to/headers/container/directory"
Путь к библиотеке: где искать файлы библиотек в дополнение к системным путям. Xcode автоматически установит его, если вы перетащите библиотеку (.a
files) в проект. Чтобы установить его вручную, используйте каталог, в котором находится библиотека.
В xcconfig
файлах вы используете эту переменную:
LIBRARY_SEARCH_PATHS = "/path/to/libraries/container/directory"
Все три могут содержать список путей с кавычками, разделенных пробелом.
Они используются для поиска фреймворков, файлов заголовков или библиотек, которые не входят в пути поиска системы (например, QTKit.Framework, стандартные файлы заголовков С++ и т.д.).
Мое наиболее распространенное использование для этого - использование файлов библиотеки заголовков boost (*.hpp) в моем коде. Я добавляю относительный путь "../lib/Boost/1.46.1" к пути поиска заголовка.
Мне лучше добавить это на уровне проекта, а не в каждую цель. Таким образом, цели наследуют это, и его нужно изменить только в одном месте, если я обновляю версию boost.