(我的问题以前曾在这里提出过,但没有可以看到的有效答案。例如Xcode4 Workspace with Static library project & application project)

我正在尝试使用由第三方提供的图书馆。他们提供了XCode项目,该项目可构建libLibraryName.a文件。他们建议将项目作为子项目添加到我自己的项目中,然后将产品libLibraryName.a文件添加到我的项目设置“使用库链接二进制文件”中描述的库集中。

该库确实可以正确构建:.a文件已生成。但是该项目在“产品”组下显示了一个红色的libLibraryName.a文件。我无法使它变黑。父项目说它找不到用于链接的LibraryName。

作为测试,我使用XCode 4静态库模板创建了一个新的静态库项目。该项目表现出相同的行为-即使构建了.a文件,产品也从未显示“黑色”。 (编辑:如果您为设备而不是模拟器而构建,它会变黑)。

我知道XCode 4默认将中间文件和产品文件放置在共享位置。我尝试了此设置,并且更改了设置以将产品文件放置在构 build 置中描述的文件夹中。两种设置均无效。

人们也建议为设备而不是模拟器而 build 。我试过这个都没有用。

是什么赋予了?我如何获得一个静态库项目来识别它在哪里构建产品,然后在另一个项目中引用该产品?

最佳答案

跳很多圈,但是现在我可以正常工作了,这里是我的注意事项。

  • 如果您创建一个新的XCode4 iOS库存“Cocoa Touch Static Library”项目(并向其中添加一些代码),该项目将立即可用。但是,当您进行设备构建时,产品文件libLibraryName.a仅变为黑色(从红色开始,表示该文件不存在)。模拟器构建并没有显示目标实际上是在构建的。
  • 在项目目标构 build 置中,“每个配置的构建产品路径”默认为$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)如果将其更改为其他名称(或者,如果您从Xcode3.x升级了项目,则我将$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)$(IPHONEOS_DEPLOYMENT_TARGET)用作默认设置),那么Product文件libLibraryName.a将永远不会变黑。对我来说,这表明XCode某个地方存在错误。
  • 我可以在构建后不让Product文件变黑的情况下生存(这是一个很好的指标,但是,嘿,等等。)但是我确实需要我的耗时项目才能找到正确的库构建,无论是用于模拟器还是设备。在理想情况下,将只有一个.a文件,其中包含i386/arm6/arm7位,但是同样,这不是我的库/库项目。
  • XCode4 Transition Guide是向我展示光明的东西。它规定了创建一个托管两个项目的工作空间,并且它们都将构建到同一共享的构建目录中。我以前没有使用工作空间,所以我使用了“文件/另存为工作空间”命令来创建新的工作空间文件。然后,我添加了库项目,并确保将其作为我的主要项目的对等对象,而不是作为 child 放置。
  • 我必须确保已将工作区配置为将构建输出放置到公共(public)文件夹中。在“工作空间设置”对话框中,将“生成位置”设置设置为“将生成的产品放置在派生数据位置”
  • 我还必须确保在“管理方案”对话框中选中每个项目的“共享”复选框。
  • 最后,要指定我的主项目的库依赖关系,我只需转到目标“构建阶段”选项卡的“使用库链接二进制文件”部分,然后单击“+”,然后从Workspace文件夹下面选择libLibraryName.a文件。请注意,在没有工作空间和通用构建目录的情况下,我曾尝试过此操作,结果是XCode在链接期间找不到.a文件。

  • 总而言之,它就像一个魅力。我忍不住认为它应该容易得多-因为我相信它在XCode3中。

    我很乐意阅读其他人在所有这些方面的经验,或者对使静态库正常工作的其他(更简单的)方法的任何反馈。

    08-26 04:05