我正在尝试清理我的一些项目,令我困惑的一个问题是如何处理我添加为“项目依赖关系”的静态库中的头文件(通过添加项目文件本身).基本结构如下:
MyProject.xcodeproj Contrib thirdPartyLibrary.xcodeproj Classes MyClass1.h MyClass1.m ...
现在,依赖关系都是正确设置和构建的,但是如何指定“thirdPartyLibrary.xcodeproj”的公共头,以便在构建MyProject.xcodeproj时位于搜索路径上.现在,我已经在第3PartyLibrary.xcodeproj中硬编码了include目录,但是这显然是笨拙和不可移植的.我认为,由于标题是公共的,并且已经被构建到〜/ Library(.a文件也是这样)的一些临时位置,所以有一种简洁的方式来引用这个目录.只有..怎么样?一小时的谷歌变成空白,所以任何帮助是非常感谢!
解决方法
我认为你的解决方案是足够的,普遍接受的.一个替代方案是使所有头文件位于一个可以描述使用依赖库的接口的伞目录下,并将其放在包含路径中.我看到它类似于/usr/include.另一个我从来没有亲自尝试过的替代方法,但是我认为这样做将是从MyProject创建对所有的第三方资料库的引用,以便它们看起来是MyProject的成员.您可以通过将它们从某个位置拖动到MyProject中,然后取消选中将其复制到项目顶级目录中的复选框.从一个角度来看,这似乎对我来说是可行的,因为它好像你明确声明你的项目依赖于那些特定的类,但是它不直接负责编译它们.
解决此问题时要注意的事项之一是依赖于Xcode自动定位库的具体实现细节.这样做可能在此期间看起来是无害的,但是它用于构建项目的工作流程可能随着更新而发生变化,并且可能会以微妙和混乱的方式破坏您的项目.如果在一些文档中没有明确定义,那么当您可以通过其他方式强制执行所需的行为时,我会采取巧合的方式,并不值得利用您的项目.最后,您可能需要定义一个惯例,您可以跟随或找到从别人采用的约定.通过这样做,您可以放心,如果您的解决方案具有记录和可重复性,任何开发人员(包括您将来都可以)可以拾取并继续进行,而不会跳过它,并且将会受到时间的证明.