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

6

例如: 我像这样导入一个框架:

#import <Cocoa/Cocoa.h>

现在问题是"Cocoa/Cocoa.h"路径是什么?我的意思是...Xcode从哪里开始查找?这个在哪里配置?那实际上是一个路径还是什么?"Cocoa/Cocoa.h"到底是什么?其中包含一个命名空间和框架吗?还是其他什么?

2个回答

4
这是Xcode文档中的内容:
2.3搜索路径 GCC在几个不同的位置查找头文件。在一个普通的Unix系统上,如果您没有另外指示,它将在以下位置查找使用#include请求的头文件:

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

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

对于C++程序来说,它还将首先查找 /usr/include/g++-v3 目录下的内容。在上面的代码中,target 是 GCC 配置编译代码时使用的系统规范名称,通常但不总是与运行系统的规范名称相同。version 是正在使用的 GCC 版本。

1
这是对问题“GCC如何找到包含路径”的回答,而不是XCode如何找到框架(其中可能包括搜索路径)。 - Warren P

1
问题并不完全正确...当你创建一个新的Xcode项目时,Xcode项目会包括对Foundation框架和其他标准框架的引用,具体取决于所选择的项目类型。如果您想使用其他框架,必须将其明确地添加到您的项目中。
当您向Xcode项目添加框架时,它提供了一系列可供选择的框架,尽管您可以从Xcode未列出的任意位置添加框架。 Xcode从“〜/Library/Frameworks”、“/Library/Frameworks”和“/System/Library/Frameworks”的内容中获取框架列表。在链接时,使用GCC指定的“-framework”选项指定的框架将从这些位置进行解析。您可以通过修改DYLD_FALLBACK_FRAMEWORK_PATH环境变量来扩展GCC将解析给出的“-framework”选项的框架的位置列表。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接