为什么找不到用于存档的静态库头文件?

时间:2012-12-10 20:40:25

标签: ios xcode compiler-errors mbprogresshud

我可以构建调试就好了。我已经三次检查静态库是否包含在项目的构建阶段设置中。我也尝试过其他类似标题包含路径的内容,但无济于事。

当我尝试为试飞建立IPA时,我收到一个错误: #import <MBProgressHUD/MBProgressHUD.h>

之前我已经能够建立一个IPA,但它之前没有实现/使用MBProgressHUD静态库。

我可以手动包含标题和代码文件,而不是静态链接它,但我更喜欢知道这里发生了什么。

感谢。

PS - 我使用了https://github.com/jdg/MBProgressHUD

中的“静态库”指令

3 个答案:

答案 0 :(得分:11)

默认情况下,Xcode将构建产品放入$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME),这相当于build/Release-iphoneos。这是产品内置的文件夹以及标题将被复制到的位置。

当我们将Release配置复制到一个名为“App Store”的配置时,Xcode现在构建为build/App Store-iphoneos。实际上,问题是静态库仍然使用其Release配置构建到Release构建文件夹中。

因为App Store配置(至少对我而言)只能在配置文件之间轻松切换,我的解决方案是将App Store配置的“按配置构建产品路径”更改为$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)这样App Store配置也可以构建到Release构建文件夹中。

答案 1 :(得分:9)

在另一个SO问题(https://stackoverflow.com/a/10159481/143225)的帮助下,我能够获得要包含的头文件。

显然,归档构建过程与调试构建过程有所不同。通过将"$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts"添加到“用户标题搜索路径”构建设置,它已成功构建。

我仍然想知道为什么这不符合我的预期。我有一个预感,该项目是为了自动包含调试和发布版本的头文件而构建的,但不知何故不适用于存档构建。这很奇怪,因为我认为归档版本继承自Xcode方案设置的调试或发布设置。

欢迎任何其他信息。

答案 2 :(得分:5)

Daniel Tull的答案可行,但您可以更新静态库项目配置,以包含“App Store”配置或您的应用目标正在构建的任何其他命名配置,而不是更改“按配置构建产品路径”反对,这是Release配置的副本。这样,静态库会将它的库和headers / include文件输出到相应的目录,这将通过'Per-configuration Build Products Path中使用的$(BUILD_DIR)/ $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)宏来解析。 “;和walllaaaaa ...公共图书馆标题现在可以通过Xcode正确解决。总而言之,如果您的应用程序目标中有一个名为“App Store”的配置,并且您链接到导出标题的静态库,请确保静态库项目还包含“App Store”配置,您将成为一个快乐的露营者。