6

我遇到了 Xcode 的隐式依赖检查和静态库的问题,我认为这是 Xcode 中的一个错误(并且已经报告过);我在这里提出它,以防其他人对此有任何想法。简而言之,如果应用程序依赖于静态库,并且作为库组件的源文件被修改,Xcode 会重建库但不会重新链接应用程序,因此在应用程序中看不到更改。

更具体地说:我有一个包含应用程序项目和静态库项目的工作区,以便应用程序调用库中的函数(并且结果在应用程序中可见:例如,函数返回显示在标签中的文本应用程序)。静态库包含在应用程序目标的“Link Binary with Libraries”构建阶段。从头开始构建会导致首先构建库,然后是应用程序,正如预期的那样(换句话说,Xcode 已经检测到依赖关系)。

现在,如果我修改库源文件中的消息文本,然后单击“构建并运行”按钮,Xcode 正确重建库,但无法重新链接应用程序,所以当应用程序运行时,未修改的消息文本是显示。

我在 Mac OS X 10.8.2 下运行 Xcode 4.5.1。在我报告的场景中,该应用程序是一个 iOS 单视图应用程序,而被调用的静态库函数恰好是用 C++ 实现的。

目前我知道除了清洁和重建之外没有其他解决方法。有没有其他人看到过这个,或者有任何其他见解?提前致谢。

4

1 回答 1

8

我最初搜索 SO 没有成功,但我一定没有正确地表达我的搜索。但是,在撰写我的问题时,“类似问题”列表提供了更好的结果,我能够找到解决方法。简单来说:

  • 在 Project Navigator 中选择库
  • 在文件检查器中找到位置;它可能是“相对于组”
  • 将其更改为“相对于构建产品”

这解决了我的测试用例中的问题;现在,只要库的源代码被修改,应用程序就会正确重建。我发现没有必要按照建议手动编辑 project.pbxproj 文件。

我仍然会声称这是 Xcode 中的一个错误,但至少现在我有一个解决方法。

于 2012-10-19T16:42:52.093 回答