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

Bre*_*den 17 xcode compiler-errors ios mbprogresshud

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

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

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

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

谢谢.

PS - 我使用https://github.com/jdg/MBProgressHUD提供的"静态库"说明

Dan*_*ull 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构建文件夹.


Bre*_*den 9

在另一个SO问题(/sf/answers/711163701/)的帮助下,我能够获得要包含的头文件.

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

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

欢迎任何其他信息.

  • 这也*几乎*对我有用,但我不得不在该路径的末尾添加"/ include /"(所以,``$(BUILD_ROOT)/../ IntermediateBuildFilesPath/UninstalledProducts/include /"`).然后Xcode最终能够在归档时使用`#import"LibraryName/Header.h"形式找到我的静态库的头文件. (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"配置,您将成为一个快乐的露营者.