Xcode如何知道在哪里寻找框架?

时间:2009-12-10 22:05:45

标签: xcode frameworks

示例:我导入这样的框架:

#import <Cocoa/Cocoa.h>

那么“Cocoa / Cocoa.h”的路径是什么?我的意思是...... Xcode从哪里开始寻找?这个配置在哪里?这实际上是一条路还是什么?什么是“Cocoa / Cocoa.h”真的吗?那里有命名空间和框架?还有什么?

2 个答案:

答案 0 :(得分:4)

这是在xcode文档中:

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

2.3搜索路径 GCC在几个不同的地方寻找标题。在普通的Unix系统上,如果你不指示它,它将在#include中查找请求的头文件:

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

对于C ++程序,它首先会查看/ usr / include / g ++ - v3。在上面,target是系统的规范名称,GCC被配置为编译代码;通常但并不总是与它运行的系统的规范名称相同。 version是正在使用的GCC版本。

&LT; /剪断&GT;

答案 1 :(得分:1)

问题并不完全正确......当您创建新的Xcode项目时,Xcode项目包括对Foundation框架和其他标准框架的引用,具体取决于所选项目的特定类型。如果要使用其他框架,则必须将其明确添加到项目中。

当您向Xcode项目添加框架时,它会提供可供选择的框架列表,但您可以从任意位置添加框架,而不是Xcode列出的框架。 Xcode从“〜/ Library / Frameworks”,“/ Library / Frameworks”和“/ System / Library / Frameworks”的内容中检索框架列表。链接时,将从这些位置解析使用GCC的“-framework”选项指定的框架。您可以通过修改DYLD_FALLBACK_FRAMEWORK_PATH环境变量来扩展GCC将通过“-framework”选项解析框架的位置列表。

编辑:
为了回答你的第二个问题,“Cocoa /”是一条道路。基本上,每个Framework包都有一个名为“Headers”的特殊文件夹,其中包含该框架的标头。当框架被添加到Xcode项目时,“标题”的内容被添加到标准标题搜索路径中,但其名称前缀为框架的名称后跟斜杠(即“Cocoa / Cocoa.h”结果到“/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h”而不是“/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa/Cocoa.h”)