Как установить путь включения в проекте xcode
Я пытаюсь использовать библиотеку C в проекте Objective-C Xcode.
Структура каталогов библиотеки выглядит следующим образом:
-- include/
|-- config.h
|-- lib/
| |-- file1.h
| |-- file2.h
| |-- file3.h
Документы библиотеки говорят, что они включают file1.h, а file1.h включает file2.h и file3.h.
Я получаю ошибки "файл не найден" для включений файлов file2.h и file3.h`. Они включены в file1.h следующим образом:
#include <lib/file1.h>
#include <lib/file2.h>
Я читал здесь, что эти угловые скобки дают указание препроцессору искать включаемые файлы по пути, указанному переменной среды INCLUDE, а не искать в том же каталоге, что и файл, содержащий #include.
Поэтому я добавил переменную среды INCLUDE в Xcode, перейдя в Product->Edit Scheme.. и установив ее в /the-whole-path-to/include/
Тем не менее, я все еще получаю файл не найдены ошибки.
Файлы успешно включены, если я изменю file1.h, чтобы включить их следующим образом:
#include "file2.h"
но я бы предпочел не делать это для каждого файла в библиотеке.
Как я могу это исправить?
7 ответов
Догадаться.
Все, что вам нужно сделать, это добавить флаг -I в настройку сборки в разделе "Другие флаги C"
Поэтому в настройках сборки вашей цели найдите "Other C Flags" и добавьте -I/path-to-include/
Вот скриншот:
В версии 5.0.2 XCode лучшим способом для достижения этой цели, вероятно, является добавление его в целевую панель "Пути поиска". Обнаружение этого было (для меня) невероятно не интуитивным. Вот как я это понял, для таких же смущенных, как и я:
В левом столбце щелкните значок Project Navigator (выглядит как папка). Затем нажмите на запись проекта. Это должно показать кучу настроек в главной панели. В верхней части этой панели нажмите "Настройки сборки". Здесь показаны несколько записей... включая одну, называемую "Пути поиска"... но вы не можете добавить путь поиска здесь! Это заставило меня скрежетать зубами пока я не выяснил, что имя проекта в верхней части этой панели было раскрывающимся, выберите цель из этого раскрывающегося списка, и теперь вы сможете дважды щелкнуть "Пути поиска по заголовкам" и выполнить необходимое редактирование.
О, радость сумасшедших графических интерфейсов.
Попробуй это:
1 - выберите файл вашего проекта в левой панели Xcode
2 - убедитесь, что ваш проект выбран в средней панели Xcode
3 - выберите "Настройки сборки" в верхней части средней панели XCode
4 - убедитесь, что "Все" и "Комбинированные" выбраны прямо под "Настройки сборки"
5 - введите заголовок в поле поиска чуть ниже "Настройки сборки"
Вы должны увидеть поля пути поиска, готовые для редактирования, в средней панели.
Я решил это в Xcode 5.0.1, используя настройки проекта проекта (как отмечали Джон и Ян выше, но я не могу комментировать из-за <50 повторений).
Новая информация:
При добавлении включений в пути поиска в заголовке пользователя мне также пришлось изменить "Всегда искать пути пользователя" на "Да".
При добавлении включаемых в (не пользовательских) путей поиска заголовка всегда искать пользовательские пути не требуется.
Хотя это работает, вероятно, лучше вместо этого поместить его на вкладке "Пути поиска".
Либо вы можете использовать "Другие флаги C", либо использовать "HEADER_SEARCH_PATHS", чтобы указать пути включения, чтобы найти заголовок для вашего исполняемого файла.
В 2021 году Xcode v. 12.4 решение выглядит так:
Проект-> Цели-> Общие-> «Сканировать все исходные файлы на наличие включений» -> установить «Да»
Это сработало для меня.
Однако это может иметь неприятные последствия, если у вас есть несколько версий определенного файла .h, что, вероятно, не является хорошей практикой, но возможно, если у вас есть много подкаталогов со своими собственными мини-проектами и включаемыми файлами с аналогичными именами.