19

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

当我尝试为试飞构建 IPA 时,出现错误: #import <MBProgressHUD/MBProgressHUD.h>

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

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

谢谢。

PS - 我使用了https://github.com/jdg/MBProgressHUD给出的“静态库”指令

4

3 回答 3

10

默认情况下,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 配置也构建进入发布构建文件夹。

于 2013-03-15T15:27:34.430 回答
9

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

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

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

欢迎提供任何其他信息。

于 2012-12-10T22:31:47.267 回答
6

Daniel Tull 的回答将起作用,但您可以更新静态库项目配置以包含“App Store”配置或您的应用目标正在构建的任何其他命名配置,而不是更改“按配置构建产品路径”,是发布配置的副本。这样,静态库将把它的库和头文件/包含文件输出到适当的目录,这将由“Per-configuration Build Products Path”中使用的 $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 宏解析'; 和 walllaaaaa...公共库头文件现在可以由 Xcode 正确解析。总而言之,如果您的应用程序目标中有一个名为“App Store”的配置,并且您链接到一个导出标头的静态库,

于 2013-12-03T18:11:27.683 回答