环境:XC4.5.2,Mountain Lion
背景:其实看项目依赖也是因为正好想用SQLcipher,按照他们的tutorial一步一步编译,结果编译不过,蒙了!!后面自己读了一堆文档,然后糊里糊涂解决了问题。
读了很多遍然后才明白什么是项目依赖,才发现有2种方案解决。由于很多article都是用的Xcode3.x的方法解决,即拖拽依赖project的.xcodeproj到App的project里。
实际上苹果应该想推广workspace解决这个问题。可是偏偏那些freaks没有好好写文档,连几个sample都没有,让人quite sick。说实话,如果不是看到iOS
的经济效益,我是不喜欢这种缺乏sample的工具的。
结果: 看了很多文章,发现还是老外的介绍的最详细,人家都提到了问题的本质与原因。但是我现在忙着赶工,没空验证全部,所以留待以后。至少为了理解项目依赖带来的问题,这1,2,3是必看的,当然反面例子4也是要看的。
参考:
1.作者用的标准XCode3.x的cross-dependencies方法,详细提到了为什么要用sourcetree与为什么要用shared folder ,当然作者写这个时(2009)还没有workspace(2011)
http://mobileorchard.com/code-sharing-via-static-libraries-and-cross-project-references/
2. 作者使用的Xcode4.x的workspace方法,解决了很多问题。这个文章相当棒。
http://www.kihongames.com/blog/labs/2011/06/labs-xcode-static-library-pitfalls/
3. 官方关于workspace的解释(很high level,太变态了)
https://developer.apple.com/library/ios/featuredarticles/XcodeConcepts/Concept-Workspace.html#//apple_ref/doc/uid/TP40009328-CH7-DontLinkElementID_1
4. (中文)作者提到了"
Installation Directory默认为/usr/local/lib
因为Build Location默认时,.a文件会放在很长(比如:/Users/xxx/Library/Developer/Xcode/DerivedData/xxxProgram
dalrvzehhtesxdfqhxixzafvddwe/Build/Products/Debug-iPhoneos)的路径下,或是我们target指定的路径
Skip Install如果是NO,可能会被安装到默认路径/usr/local/lib
"。 但是很不幸,作者写到把header改为Public恰恰是会带来hard-to-debug compilation问题的,这个要参考2了。http://blog.csdn.net/wuxj9531/article/details/8467522