【问题标题】:XCode4 is not linking newly compiled static library (dependent) projectXCode4 没有链接新编译的静态库(依赖)项目
【发布时间】:2011-09-06 12:37:57
【问题描述】:

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

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

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

也许是线索: - 我正在使用 LLVM, - 我打开了 -all_load 标志。

【问题讨论】:

标签: objective-c xcode cocoa xcode4


【解决方案1】:

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

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

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

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

希望对您有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          如果你尝试会怎样:

          • 干净
          • 重建

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-23
            • 1970-01-01
            • 2011-12-12
            • 1970-01-01
            • 2015-07-20
            • 1970-01-01
            相关资源
            最近更新 更多