2013-04-06 41 views
1

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

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

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

谢谢!

编辑:要清楚,我可以添加但C库无论是作为源或在Xcode子项目,对于超出范围,这不是对这一具体项目有帮助的原因。那么,它能像以前的Xcode版本一样工作吗?如果不是,知道为什么不会很有趣。

回答

0

建议的方法是在Xcode中创建一个库项目,一个用于iOS系统(有它的模板),那么当你拿到构建项目添加到您的应用程序,确保LIB是依赖和被链接。网上有很多教程如何做到这一点。

然后作为iOS的发展,以及新的架构(armv7s)来了,你只需要更新这两个项目。

+0

有一个很好的理由没有正常地将库添加到项目中(并且我必须制作一个临时项目,就像每年需要调试一次时那样)。所以对于这个项目的具体细节,它以前的工作方式非常方便,我想看看我能否得到回报。 – Ecuador 2013-04-06 13:07:22

0

我在同一个问题上挣扎着。

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

在我看来,这是一个应用程序项目问题。同一个库可以在另一个应用程序项目中使用源代码进行调试,这是一个线索。

我在应用项目中的同一个库的多个版本,只设定的目标会员选择哪些应该被使用。不知道这是否会影响我的应用程序项目。 然而,在删除所有库并将它们复制到应用程序项目后,我能够调试可访问源代码的库。