Xcode - 在项目外部构建的调试库

时间:2013-04-06 11:49:19

标签: ios xcode xcode4.5 xcode4.6

我有一个C库,其代码位于/ repos1 / clib中。我使用最新的iOS sdk从命令行构建它来创建clib.a(包括模拟器的调试版本),我将其复制到/ repos2 / proj中的iOS项目中。

我已经使用这个设置好几年了。旧的C库偶尔可能需要一些调试,我很高兴Xcode只是简单地进入项目之外的库代码(在repos1内部)而不需要进行任何设置 - 它只是起作用。 但这直到几个Xcode版本之前。我不确定它何时改变 - 也许当他们从gcc转移到llvm时? - 因为我很少需要调试C代码,但是有一段时间我只是在尝试从iOS项目调试C库时才进行解密(至少包括对C文件名和行号的引用)。有几次我需要调试它非常不方便(我创建一个包含C代码的临时项目)。

那么,任何想法为什么它以前工作,现在不工作?我应该在哪里看?可能是我构建C库的方式,也许在我使用的gcc中有一个标志,它在llvm中没有等价物(我可以找到并发布我正在使用的旧构建命令,如果它是相关的)?是Xcode中的问题,还有一种方法可以告诉它在哪里查找源代码?

谢谢!

编辑:为了清楚起见,我可以将C库添加为源代码或作为Xcode中的子项目,但是由于超出范围的原因,这对此特定项目没有帮助。那么,它可以像以前的Xcode版本一样工作吗?如果没有,知道为什么不是很有趣。

2 个答案:

答案 0 :(得分:0)

推荐的方法是在Xcode中创建一个库项目,一个用于iOS(有一个模板),然后在构建时将该项目添加到应用程序中,确保lib是一个依赖项并获取链接。网上有很多教程如何做到这一点。

然后随着iOS的发展和新架构(armv7s)的到来,您只需更新两个项目。

答案 1 :(得分:0)

我正在努力解决同样的问题。

我尝试在库/应用程序项目中将与符号剥离和复制应用程序项目相关的所有选项重置为与库项目相同的truecrypt驱动器,但它没有帮助。

在我看来,它似乎是一个应用项目问题。可以在另一个带有源代码的应用程序项目中调试相同的库,这是一个线索。

我在应用项目中拥有同一个库的多个版本,并且只设置目标成员资格以选择应该使用哪个版本。不确定这是否会以某种方式影响我的应用项目。 然而,在删除所有库并再次将它们复制到app项目之后,我能够通过访问源代码来调试库。