Как добавить глобальный путь include для xcode
Я хотел бы добавить ~/include в мой путь include для всех проектов при использовании Xcode, что-то вроде установки переменной среды CPLUS_INCLUDE_PATH
в Linux. (См. здесь для соответствующего вопроса Linux.)
Возможно ли это в Xcode? Я попытался установить вышеуказанную переменную среды, но она не работает. (И если это возможно, я также хотел бы установить связанные пути, например LIBRARY_PATH и LD_LIBRARY_PATH.)
Ответы
Ответ 1
В соответствии с Apple Docs вы можете указать значение по умолчанию для любой настройки сборки с помощью переменная среды.
В этом случае вам нужно установить HEADER_SEARCH_PATHS
. По какой-то причине я не понимаю, это не работает. Он отлично работает для других настроек сборки (например, OTHER_CFLAGS), но не для HEADER_SEARCH_PATHS
. Вы можете увидеть, какое имя переменной для любого параметра, открыв помощника исследователя в окне настроек сборки (кнопка книги внизу слева.)
Один var, который работает, USER_HEADER_SEARCH_PATHS
, который похож на то, что вы хотите, но работает только для путей в двойных кавычках (не в угловых скобках.)
Итак,
#include "bar.h"
будет работать, но
#include <bar.h>
не будет.
Плагин настроек построения, указанный в приведенной выше статье об переменных окружения, должен выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>USER_HEADER_SEARCH_PATHS</key>
<string>~/test</string>
</dict>
</plist>
Надеюсь, что это поможет.
Ответ 2
Для любого из вас, благословенных любимцев, пытающихся достичь этого, или любого другого взлома ~/.MacOSX/environment.plist
, известного как глобальные экологические переменные в этом мире после смерти, посмотрите EnvPane - панель предпочтений OS X для переменных среды
EnvPane - это панель предпочтений для Mac OS X 10.8 (Mountain Lion), которая позволяет вам устанавливать переменные среды для всех программ как на графических, так и на терминальных сеансах. Мало того, что он восстанавливает поддержку ~/.MacOSX/environment.plist в Mountain Lion, он также немедленно публикует ваши изменения в среде без необходимости выхода из системы и обратно. Это работает даже для изменений, сделанных вручную путем редактирования ~/.MacOSX/environment.plist, а не только изменения, сделанные с помощью панели предпочтений.
![enter image description here]()
Ответ 3
Добавьте параметр сборки HEADER_SEARCH_PATHS
в проект Xcode. Этот параметр принимает разделенный пробелами список путей, и если путь заканчивается двойной звездой (**
), он будет искать подкаталоги рекурсивно. Чтобы ответить на ваш пример, установите HEADER_SEARCH_PATHS
в:
~/include
Если у вас было несколько путей для включения, вы должны установить его так:
~/include ~/my_other_includes/** /usr/local/special_frameworks/**
Ответ 4
Просто выберите файл .c или .m в своей вкладке "Группы и файлы" и выберите "получить информацию" через RMB,
то в разделе "build" вы можете добавить дополнительные флагов компилятора, например, -I, для дополнительного включения пути поиска.
Ответ 5
Параметры сборки не являются переменными среды, а переменные среды не являются настройками сборки. Установка переменной окружения не влияет на сборки Xcode.
USER_HEADER_SEARCH_PATHS
- это параметр построения, и размещение в нем списка путей приведет к тому, что вы хотите. Если вы установите значение в целевом инспекторе, оно вступит в силу только для этой цели (и только для назначенных конфигураций сборки). Если вы установите его в инспекторе проекта, он вступит в силу во всех целях проекта, если только цель не переопределит его с его собственной настройкой.
Для путей, специфичных для вашего компьютера, вы, вероятно, должны определить Дерево источников в настройках Xcode, например LOCAL_INCLUDE = ~/include
. Затем определите USER_HEADER_SEARCH_PATHS = $(LOCAL_INCLUDE)
в проекте. Таким образом, другие люди могут открыть ваш проект и построить его, установив исходное дерево на конкретное местонахождение локального компьютера на своем компьютере, не изменяя файл проекта.