为什么找不到静态库的头文件进行存档?
我可以构建调试就好了。 我已经三次检查过静态库是否包含在项目的构建阶段设置中。 我也尝试过其他东西,比如标题包含路径等,但无济于事。
当我尝试为测试飞行构建IPA时,我收到一个错误: #import
我之前已经能够构建一个IPA,但它之前没有实现/使用MBProgressHUD静态库。
我可以手动包含头文件和代码文件,而不是静态链接它,但我更喜欢知道这里发生了什么。
谢谢。
PS – 我使用https://github.com/jdg/MBProgressHUD提供的“静态库”说明
默认情况下,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版本文件夹中。
在另一个SO问题( https://stackoverflow.com/a/10159481/143225 )的帮助下,我能够获得要包含的头文件。
显然,归档构建过程与调试构建过程有些不同。 通过将"$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts"
到“用户标题搜索路径”构建设置,它已成功构建。
我仍然想知道为什么这不符合我的预期。 我有一个预感,该项目是为了自动包含调试和发布版本的头文件而构建的,但不知何故不适用于存档构建。 这很奇怪,因为我认为归档版本inheritance自Xcode方案设置的调试或发布设置。
欢迎任何其他信息。
Daniel Tull的答案将起作用,但您可以更新静态库项目配置,以包含“App Store”配置或您的应用目标正在构建的任何其他命名配置,而不是更改“按配置构建产品路径”,是Release配置的副本。 这样,静态库会将它的库和headers / include文件输出到相应的目录,这将通过’Per-configuration Build Products Path中使用的$(BUILD_DIR)/ $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)宏来解析。 “; 和walllaaaaa …公共图书馆标题现在可以通过Xcode正确解决。 总而言之,如果您的应用程序目标中有一个名为“App Store”的配置,并且您链接到导出标题的静态库,请确保静态库项目还包含“App Store”配置,您将成为一个快乐的露营者。