繁体   English   中英

XCode4 未链接新编译的 static 库(依赖)项目

[英]XCode4 is not linking newly compiled static library (dependent) project

我在 XCode4 中有一个项目,有一个依赖项目(恰好是 Kal 项目)。

当我从 XCode 中更新 Kal 项目时,然后运行父项目(这发生在同一个工作区顺便说一句),看起来XCode 编译了修改后的 Kal 项目,但没有链接到新编译的 libKal.a 文件。

我正在运行默认的父项目方案之一。 从日志中我可以看出,在运行时,它会先构建依赖项目,然后再构建父项目。 但是我可以让父项目使用我的更改的唯一方法是,如果我在父构建目标的“Link Binary with Libraries”部分下重新添加 libKal.a 产品作为要链接的库。

也许线索: - 我正在使用 LLVM, - 我有 -all_load 标志。

如果你尝试:

  • 干净的
  • 重建

在这种情况下,这通常对我有用......

检查您的计划。 对于依赖于库的应用程序,请确保每次都构建依赖项。 我已阅读该计划应该已经有这个更新,但有时它没有。 你可以在这里看到一个例子......

http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/#configuring_the_projects_scheme

基本上编辑应用程序的方案并单击左上角的构建项。 您将看到作为该构建的一部分运行的每个目标。 如果您没有看到依赖项的目标,您可以添加它。 然后确保您的应用程序列在最后,以便首先创建所有依赖项。

我可以建议您为您的库和主要项目使用单个工作区。 在主项目方案中,在主项目之前添加库目标(在主目标之前编译库)并设置标题搜索路径。

简化您的生活并使用cocoaPods 这是一个很好的教程 CocoaPods 将自动创建一个工作区,其中包含项目所需的所有库。 我曾经在库中遇到过各种各样的问题,现在我只使用 Pods。

根据您设置项目的方式,Xcode 不一定会重新链接依赖库。 为了让它每次都链接,您需要在您希望库也链接的目标的构建阶段将项目添加为目标依赖项。

假设您有一个名为 Test 的工作区和两个名为 TestApplication 和 TestLibrary 的项目。 如果您将它们作为单独的项目包含在工作区中,您将能够将 TestLibrary.a 作为库添加到 TestApplication 目标的构建阶段的“Link Binary With Libraries”部分中,但您不会能够将其添加到“目标依赖项”部分。

现在,如果您将 TestLibrary 移动为 TestAppliction 的子项目(只需将其拖到项目导航器中的项目中),您将能够将 TestLibrary 添加为既与 AND 链接的库,又作为 TestApplication 的目标依赖项。 将其添加为目标依赖项可确保 Xcode 将构建(如有必要)并链接库。

抱歉,我已经有一段时间没有想到以这种方式设置我自己的项目了,所以我不记得到底是什么情况下图书馆没有链接。 我认为它是这样的,因为它是一个单独的项目,Xcode 不会检查它是否需要再次构建,而只是链接到以前的库。 我确实记得,在我弄清楚这一点之前,我的工作只是简单地触摸项目中需要构建的文件。 如果我在构建之前要接触的库项目,我有一个名为 touchMe 的文件,它作为编译源包含在内。 如果将库项目移动到依赖项目不是您的选择,您可以做同样的事情来查看是否也解决了您的问题。

希望有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM