Добавление Системный путь поиска заголовка к XCode

(Отправляя этот вопрос в справочных целях, я отвечу сразу)

Как добавить пути поиска заголовка в Xcode? Особенно при включении с этим синтаксисом:

include <myheader.h>
  1. Глобальное добавление пути ко всем проектам, таким как системные заголовки.
  2. Добавление пути только к определенному проекту.
53
задан Eonil 26 May 2014 в 10:56
поделиться

1 ответ

У нас есть два варианта.

  1. Посмотрите «Настройки» -> «Расположение» -> «Деревья исходных текстов» в предпочтениях Xcode. Добавленный здесь путь будет системным путем, доступным для включения во все проекты.

  2. Установите параметр HEADER_SEARCH_PATHS в настройках сборки в информации о проекте. Я добавил сюда "$ {SRCROOT}" без рекурсии. Этот параметр подходит для большинства проектов.

О 2-м варианте:

Xcode использует Clang с набором команд, совместимым с GCC. У GCC есть опция -Idir , которая добавляет пути поиска системного заголовка. И эта опция доступна через HEADER_SEARCH_PATHS в настройках сборки проекта Xcode.

Однако строка пути, добавленная к этому параметру, не должна содержать никаких пробелов, потому что параметр будет передан команде оболочки как есть.

Но некоторые пользователи OS X (например, я) могут помещать свои проекты по пути, включая пробелы, которые следует экранировать . Вы можете избежать его, например, / Users / my / work / a \ project \ with \ space , если вы введете его вручную. Вы также можете заключить их в кавычки, чтобы использовать переменную среды, например "$ {SRCROOT}" .

Или просто используйте . для обозначения текущего каталога. Я видел этот трюк в исходном коде Webkit, но я не уверен, что текущий каталог будет установлен как каталог проекта при его создании.

$ {SRCROOT} - это предопределенное значение Xcode. Это означает исходный каталог. Дополнительные значения можно найти в Справочном документе .

PS. На самом деле скобки {} использовать не обязательно. Я получаю тот же результат с $ SRCROOT . Если вы знаете разницу, дайте мне знать.

99
ответ дан 7 November 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: