![]() |
1
11
在过去的几个月里,我学到了很多关于框架的知识,所以我正在重写这个答案。请注意我说的是 作为开发工作流的一部分安装框架 . 安装公共框架(即将由多个应用程序或捆绑包使用的框架)的首选位置是/library/frameworks[link text],因为“编译时编译器自动发现此位置的框架,运行时动态链接器自动发现此位置的框架。”[framework programming guide]。要做到这一点,最优雅的方法是在构建设置的部署部分。 当您在您的框架上工作时,有时您在进行构建时确实希望更新框架,有时不希望更新框架。因此,我只在发布配置中更改部署设置。所以:
安装构建产品位置是安装的根。它的默认值是some/tmp目录:如果不将其更改为系统根目录,则永远不会看到已安装的框架,因为它隐藏在/tmp中。 现在,您可以在调试配置中按照自己的喜好使用框架,而不必扰乱其他项目,当您准备好发布时,您所需要做的就是切换到发布并执行构建。 XCODEL 4警告 自从切换到Xcode4之后,我的定制框架遇到了很多问题。大多数情况下,它们都在链接gdb中的警告,这些警告不会真正干扰框架的有用性,除非运行内置单元测试。一周前我向苹果提交了一张技术支持票,但他们仍在调查。当我得到一个有效的解决方案时,我会更新这个答案,因为这个问题已经被证明非常流行(1 kview和counting)。 |
![]() |
2
3
没有太多的理由把一个框架放到库/框架中,这是很多工作:你需要在一个安装包中为用户做这件事,这对于创建和维护来说是一个巨大的麻烦,或者在你的应用程序中有安装代码(它只能安装到~/l/f,除非你花费了制作你的应用程序所需的时间和精力能够安装到/L/F,具有根电源)。 更常见的是 what Apple calls a âprivate frameworkâ . 您将把它打包到应用程序包中。 实际上,即使任何应用程序(如Sparkle、Growl)打算通用的框架都是为用作私有框架而构建的,这仅仅是因为将框架的一个副本安装到库/框架的正确方法非常麻烦。 |
![]() |
3
3
传统的方法是让框架项目及其客户机共享一个公共的构建目录。Xcode将在build文件夹中搜索框架头文件并针对框架二进制文件进行链接。 第一 ,在任何其他位置之前。因此,一个针对报头编译和链接的应用程序项目将得到最近构建的一个,而不是安装的任何东西。 然后,您可以删除cp-r,而使用命令行中的xcodebuild install dstroot=/将生成产品放置在最终位置。但是,您只需要在完成之后才需要这样做,而不是每次重建框架时都需要这样做。 |
![]() |
4
0
当然,当您分发您的框架时,它应该安装在/library/frameworks中;但是在我看来,您使用的是框架的测试/调试版本,这很奇怪。 我的第一直觉是在~/library下安装测试版本,因为它只会使设置测试和调试环境变得简单得多。如果可能,我希望调试/测试框架位于我正在测试的版本的构建树中,在这种情况下,它作为 Private Framework 用于测试。当涉及到处理框架的多个版本时,这将使您的生活简单得多。 最终,只要您的应用程序或测试套件加载正确的版本,框架的位置就无关紧要。选择最容易进行测试/调试/开发的位置。 |