我可以构建调试就好了。我已经三次检查静态库是否包含在项目的构建阶段设置中。我也尝试过其他类似标题包含路径的内容,但无济于事。
当我尝试为试飞建立IPA时,我收到一个错误:
#import <MBProgressHUD/MBProgressHUD.h>
之前我已经能够建立一个IPA,但它之前没有实现/使用MBProgressHUD静态库。
我可以手动包含标题和代码文件,而不是静态链接它,但我更喜欢知道这里发生了什么。
感谢。
PS - 我使用了https://github.com/jdg/MBProgressHUD
中的“静态库”指令答案 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”配置,您将成为一个快乐的露营者。