2009-12-10 3 views
5

Пример: Я импортировать такую ​​структуру, как это:Как Xcode знает, где искать фреймворк?

#import <Cocoa/Cocoa.h> 

Теперь то, что путь "Какао/Cocoa.h"? Я имею в виду ... откуда происходит поиск Xcode? Где это настроено? И это на самом деле путь или что-то еще? Что такое «Cocoa/Cocoa.h»? Пространство имен и структура там? Или что еще?

ответ

4

Это в документации Xcode:

http://developer.apple.com/mac/library/documentation/DeveloperTools/gcc-4.0.1/cpp/Search-Path.html#Search-Path

2,3 Путь поиска НКУ выглядит в нескольких различных местах, для заголовков. В нормальной системе Unix, если вы не учите его иначе, он будет искать заголовки запрашиваемых с #include в:

/usr/local/include 
libdir/gcc/target/version/include 
/usr/target/include 
/usr/include 

Для программ на C++, он также будет выглядеть в/USR/включать/г ++ - v3, первый. В приведенном выше примере цель - это каноническое имя системы, для которой GCC был настроен для компиляции кода; часто, но не всегда так же, как каноническое имя системы, в которой он работает. версия - это версия GCC.

</чик >

+1

Это ответ на квест «как GCC find включает пути», а не как XCode находит фреймворки (которые могут включать пути поиска). –

1

Вопрос не совсем правильно ... когда вы создаете новый проект Xcode, проект Xcode включает в себя ссылку на рамки Фонда и другие стандартные рамки, в зависимости от конкретного типа выбранный проект. Если вы хотите использовать дополнительную структуру, вы должны явно добавить ее в свой проект.

Когда вы добавляете Framework в свой проект Xcode, он предоставляет список Frameworks на выбор, хотя вы можете добавить фреймворк из произвольного местоположения вместо тех, которые перечислены Xcode. Xcode извлекает список фреймворков из содержимого «~/Library/Frameworks», «/ Library/Frameworks» и «/ System/Library/Frameworks». При связывании инфраструктура, указанная в опции «-framework» для GCC, будет разрешена из этих мест. Вы можете расширить список местоположений, из которых GCC будет разрешать фреймворки, заданные с помощью опции «-framework», изменяя переменную среды DYLD_FALLBACK_FRAMEWORK_PATH.

EDIT:
Чтобы ответить на ваш второй вопрос, «Какао /» - это путь. В принципе, у каждого пакета Framework есть специальная папка с названием «Заголовки», которая содержит заголовки для этой структуры. Когда Framework добавляется в проект Xcode, содержимое «Заголовков» добавляется к стандартным дорожкам поиска заголовков, но их имена с префиксом имени структуры, за которым следует слэш (то есть «Cocoa/Cocoa.h» разрешает к «/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h», а не «/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa/Cocoa.h»)