XCode3 - 库搜索路径和项目框架之间的关系
XCode3 - relationship between Library Search Paths and project Frameworks
作为来自VS的新MAc开发人员,我并不真正'理解'框架是什么。如果我向项目添加一个框架,这是否自动意味着当我执行#include <SomeFile.h>
时应该找到标头?
似乎发现在某些情况下我还必须添加标题搜索路径。这是否意味着框架无法正常工作?
根据 Apple 概念文档的定义:
框架是封装共享的分层目录 资源,例如动态共享库、NIB 文件、图像文件、 本地化字符串、头文件和参考文档中的 单个包。
换句话说,它是一个或多个应用程序可以利用的资源的编译,它本身不是一个应用程序。
Apple 概念文档详细介绍:
您可以使用
#include
在代码中包含框架头文件 命令。如果你在Objective-C中工作,你可以使用。#import
指令而不是#include
指令。二 指令具有相同的基本结果。但是#import
指令 保证永远不会多次包含同一个头文件。 有两种方法可以包含框架标头:#include <Framework_name/Header_filename.h> #import <Framework_name/Header_filename.h>
在这两种情况下,Framework_name是框架的名称和 Header_filename 是该框架或其子框架之一中的头文件的名称。
包含框架头文件时,传统上包括 仅主框架头文件。主头文件是 名称与框架名称匹配的头文件。例如 通讯簿框架有一个主头文件,名称为
AddressBook.h
.
要包含自定义框架,请执行以下操作:
如果您的项目链接到未包含在任何 对于标准位置,必须显式指定 在 Xcode 可以找到其头文件之前,该框架。要指定 此类框架的位置,添加包含 框架到Xcode的"框架搜索路径"选项 项目。Xcode 将此目录列表传递给编译器,并 链接器,它们都使用列表来搜索框架资源。
如果框架编写正确,它将包含标头以及实际的可链接(二进制(文件。编译器(以前是GCC,最近是LLVM-clang(识别框架路径并自动知道在哪里搜索框架标头。不过,也有一些极端情况:
- 如果你不添加一个框架,而是从/usr/lib 添加一个传统的 Unix 库(libsqlite3.dylib、libxml2.dylib 等(。那么可能是库有一个单独的(非标准(包含路径的情况;例如,在 glib 的情况下,这很常见。在这种情况下,您必须将/usr/include/glib-2.0 添加到标头搜索路径中。
- 相反的情况:当你遇到一些"保护伞"框架时(例如,Core Audio被分成小的子框架,如AudioToolbox.framework等(,那么该特定框架不包含可链接的动态库,只包含标头。
我希望这有所帮助。
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 框架代码和普通代码之间的区别
- 在Cascades和Colenative之间,这两个主要的BlackBerry Playbook C 框架,易于使用
- Google 测试框架 - 测试用例之间的依赖关系
- c++/开放框架-如何在开放框架程序之间切换
- 铬嵌入框架(C++)和另一个二进制之间的IPC
- XCode3 - 库搜索路径和项目框架之间的关系
- 在C++actors框架中在类型化参与者之间转发消息的最佳实践
- 如何避免juice框架和OpenCV之间的干扰命名空间问题
- Gtkmm 3.0如何在框架或窗口之间切换