Xcode 4 无法从静态库依赖项中找到公共头文件

2023-11-22

辅助搜索的替代标题

  • Xcode 找不到标头
  • Xcode 中缺少 .h
  • 未找到 Xcode .h 文件
  • 未找到词法或预处理器问题文件

我正在开发一个来自 Xcode 3 的 iOS 应用程序项目。我现在已经迁移到 Xcode 4,我的项目构建了许多静态库。

这些静态库还声明公共标头,并且这些标头由应用程序代码使用。在 Xcode 3.x 中,标头被复制(作为构建阶段)到public headers directory,那么在应用程序项目中public headers directory被添加到headers search list.

在 Xcode 4 下,构建目录被移动到~/Library/Developer/Xcode/DerivedData/my-project.

问题是如何在标题搜索设置中引用这个新位置?看起来:

  • public headers directory是相对于DerivedData目录,但是
  • headers search目录相对于其他内容(可能是项目位置)

我应该如何在 Xcode 4 中为 iOS 开发设置静态库目标,以确保在尝试编译为依赖项时使用静态库的客户端可以使用头文件?


我见过的解决这个问题的每个解决方案要么看起来不优雅(将标头复制到应用程序的项目中),要么过于简化以至于它们只能在微不足道的情况下工作。

简短的回答

将以下路径添加到您的用户标头搜索路径

“$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts”

为什么这有效?

首先,我们需要了解问题所在。在正常情况下,也就是说,当您运行、测试、分析或分析时,Xcode 会构建您的项目并将输出放在 Build/Products/ 中配置/Products 目录,可通过$BUILT_PRODUCTS_DIR macro.

大多数有关静态库的指南建议设置公共标头文件夹路径 to $TARGET_NAME,这意味着你的 lib 文件变成$BUILT_PRODUCTS_DIR/libTargetName.a 并将您的标头放入$BUILT_PRODUCTS_DIR/目标名称。只要您的应用程序包含$BUILT_PRODUCTS_DIR在其搜索路径中,则导入将在上面给出的 4 种情况下起作用。但是,当您尝试存档时,这将不起作用。

归档工作方式略有不同

当您归档项目时,Xcode 使用另一个名为 ArchiveIntermediates 的文件夹。在该文件夹中,您将找到 /YourAppName/BuildProductsPath/Release-iphoneos/。这是文件夹$BUILT_PRODUCTS_DIR指向您何时进行存档。如果您查看那里,您会发现有一个指向您构建的静态库文件的符号链接,但带有标头的文件夹丢失了。

要查找标头(和 lib 文件),您需要转到 IntermediateBuildFilesPath/UninstalledProducts/。记住当你被告知设置时跳过安装对于静态库来说是 YES 吗?这就是您制作存档时设置的效果。

旁注:如果您不将其设置为跳过安装,您的标头将被放入另一个位置,并且 lib 文件将被复制到您的存档中,从而阻止您导出可以提交到 App Store 的 .ipa 文件。

经过大量搜索,我找不到任何与 UninstalledProducts 文件夹完全对应的宏,因此需要使用“$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts”构建路径

Summary

对于静态库,请确保跳过安装并将公共标头放入 $TARGET_NAME 中。

对于您的应用程序,将用户标头搜索路径设置为“$(BUILT_PRODUCTS_DIR)”(适用于常规构建)和“$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts”(适用于存档构建)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode 4 无法从静态库依赖项中找到公共头文件 的相关文章

  • php 头问题

    你能帮我一下吗 我转移到新的托管 突然收到此错误 警告 无法修改标头信息 标头已由 输出从 home capital public html Google Connect php 1 开始 在 home capital public htm
  • 如何修复 Visual C++ 2010 中静态库项目中的警告 MSB8012?

    我正在尝试将静态库从 VC 2008 转换为 VC 2010 我得到 这些关于 TargetPath 和 TargetName 的警告 我查看了我的配置 我不知道如何让这些消失 对于我通常构建一次并且很少重建的静态库来说 这是严重的还是真的
  • ld:警告:__DATA/__objc_imageinfo__DATA 节的大小意外地大

    有谁知道这个警告是什么意思 接下来是错误 Command Developer Platforms iPhoneSimulator platform Developer usr bin llvm gcc 4 2 failed with exi
  • +exposeBinding 不起作用

    我试图在 NSWindowController 的子类中公开自定义绑定 我在子类中添加了以下代码 void initialize self exposeBinding customBinding 然后 在 IB 中 我有一个子类的对象实例
  • 静态链接库时出现 glew 链接器错误

    我正在尝试在 Visual Studio 2012 中构建一个 opengl 项目 我想静态包含 glew 库 因此我从源代码构建它并将生成的 glew32sd lib 复制到我的 lib 目录 我将此 lib 路径提供给 Visual S
  • 将预处理器宏添加到 xcode 6 中的目标

    也许这非常简单 但我找不到在 Xcode 6 中为目标定义预处理器宏的方法 我已经做了一个屏幕截图来显示它在 Xcode 中的位置 因为它更容易 选择项目文件 选择您想要的目标 转到构建设置 搜索 预处理器 添加用于调试 发布或两者的预处理
  • Xcode 4 没有代码完成

    我已经使用 Xcode 4 两周了 我注意到我没有获得 if else 和 switch 语句的代码完成宏 就像这篇文章描述的那样 http macdevelopertips com xcode xcode code completion
  • XCode 4.2 + Iphone 3g 无法运行应用程序

    当我创建一个普通的 Phonegap 应用程序并尝试在装有 IOS 4 2 的 iPhone 3g 上运行它时 它无法运行 IOS 部署目标设置为 4 0 并且一切都构建成功 这一切都是在我使用 IOS SDK5 安装 XCode 4 2
  • 如何传递对象的数组列表来填充每个部分标题文本及其内容?

    我在用粘性网格标题 https github com TonicArtos StickyGridHeaders对于带有部分的 GridView 这个库正在使用R array countries填充GridView使用提供的数据并从传递的字符
  • 将搜索栏从 magento 主页的标题中移动

    我是 magento 的新手 我想将搜索栏从标题移动到主页的中间位置 以便它仅显示在主页上 我在 magento 论坛上阅读了许多相关答案 但所有人都在尝试编辑 box css 中的 mini search 元素 但不幸的是我在此文件中没有
  • 标题中的全日历自定义按钮

    我需要在同一页面上的两个 或更多 完整日历之间切换 并且希望将此功能添加到日历标题内的自定义按钮中 我在自定义按钮上发现了一些有趣的代码 但它有点过时 因为它引用的是 Fullcalendar v 1 6 1 而我正在使用 2 3 1 这是
  • 防止 iOS 上的反射(objc/运行时)

    我正在开发一个处理敏感数据的静态库 使用该库的开发人员必须不能在该库上使用反射 在Android上 我们通过开发一个来解决这个问题aar文件与service并运行service进入单独的进程 当服务运行到另一个进程中时 开发人员不能使用反射
  • Xcode -- 让force_load 使用相对路径

    某些库在链接到 Xcode 项目时需要 all load 链接器标志 但是 如果库之间存在符号冲突 这会导致链接器错误 解决方案是使用 force load 它可以有效地让您在某些库上使用 all load 但不能在其他库上使用 然而 这反
  • Mac 操作系统的 windows.h 替代品

    早上好 我正在使用 Codeblock c 程序进行编程 但是 我需要使用窗口 h and conio h MacBook 上没有这个头文件 拜托 你能帮我吗 不起作用的来源 void gotoxy int x int y COORD co
  • Xcode 4 自动完成错误

    您是否还面临 Xcode 4 自动完成功能的问题 该功能过去在 3 x x 版本上运行良好 我已经在 Prefix 中导入了一些类 但 Xcode 不想帮助我输入代码 我必须手动添加上面的 implementation 导入 myclass
  • Quake 源代码中我无法理解的符号 (C)

    我在查看 Quake 1 GPL 代码时遇到了各种类似的头文件 但我似乎不明白它们的目的或用途 它们看起来像某种表格 结构如下 1 0 1 1 1 2 1 3 1 4 1 5 在他们之前或之后没有任何东西 我理解它们定义了一些东西 但我从未
  • Xcode 4 .xib 创建 iPad 版本

    我有一台 iPhone xib 我想将其变成 iPad xib 在 Xcode 3 中 有一个 创建 iPad 版本 菜单选项 我如何在 Xcode 4 中执行此操作 我目前调整了 xib 的大小 但是当我打开模拟项目 导航栏等 时 它会将
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • HTTP Header Key 可以重复吗?

    在 JAVA HttpUrlConnection 中 请求 Header 设置的主要逻辑代码如下 public synchronized void set String k String v for int i nkeys i gt 0 i
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个

随机推荐

  • 在eclipse中传递JUnit命令行参数

    最近在eclipse中使用junit 还在学习中 我知道如何在 Eclipse 中传递命令行参数 但是如何将它们传递给 Junit 中的测试用例 另外我如何访问它们 You cannot将命令行参数传递给 JUnit 测试 因为没有运行 m
  • 查询性能计数器状态?

    我读过一些关于 QPC 实现的问题和不准确性的文章 但所有这些讨论和文章似乎都已经过时了 有人知道最新 Win7 操作系统和 Intel AMD cpu 上 QPC 功能的当前状态吗 有什么改进吗 是例如涡轮增压仍然是一个大问题 我主要对此
  • 巨大的 XML 文件到文本文件

    我有一个巨大的 XML 文件 15 GB 我想将 XML 文件中的 文本 标签转换为单个页面 XML 文件示例
  • 在 Delphi 中开发具有管理员权限的应用程序

    我在Windows 7下使用D2010编写一个似乎需要管理员权限的应用程序 我认为是因为它使用COM与第三方 exe进行通信 这也需要管理员权限 我已根据需要添加了清单资源 但是当我尝试从 IDE 调试应用程序时 它会报告 无法创建进程 请
  • 缺少必需参数:redirect_uri 和 Passport-google-oauth

    Using passport google oauth 0 2 0 在我的 MEAN Stack 应用程序中 在这里找到 https github com jaredhanson passport google oauth 当我运行应用程序
  • 套接字编程的替代方案是什么?

    我正在浏览编程疑难解答 我想知道套接字编程的替代方案是什么 如果有的话 假设您可以控制所使用的协议 您可以选择更高级别的抽象 例如 NET 的 Remoting 或 WCF
  • 获取主窗口的位置/宽度/高度[重复]

    这个问题在这里已经有答案了 我想知道获取有关主窗口当前位置和宽度 高度信息的最佳方法 我想在主窗口内保留一个子窗口 因此我想在子窗口的移动功能期间检查 MainWindows 边框的坐标 我只能找到 Window LocationChang
  • 当页面完全呈现时,如何执行 JavaScript 函数?

    当页面完全呈现 显示 时 您将如何执行 JavaScript 函数我知道onLoad事件在页面加载时但在渲染之前执行 我之前已经通过使用间隔为 0 的超时来解决这个问题 这似乎通常有效 但对于我敏感的情感来说似乎有点不优雅 有没有正确的方法
  • 是否可以更改 Spacy 分词器的分词规则?

    默认情况下 德语 spacy 分词器不会按斜杠 下划线或星号进行拆分 这正是我所需要的 因此 der die 会生成单个标记 然而 它确实在括号上拆分 因此 dies und das 被拆分为 5 个标记 有没有一种 简单 方法告诉默认标记
  • Video.js YouTube 视频

    我无法让 youtube 视频与 video js 一起使用 我在头部添加了 然后在正文中
  • Proguard 阻止 WebView 中的 Javascript 工作

    我有一个 JSBridge 类 内部类 它是一个 javascript 接口 private class JsBridge implements JsCallback param handlerName method required pa
  • 调试 Flash 应用程序时如何仅抑制 [SWF] 跟踪

    我正在开发一个 Adob e Flex 应用程序 该应用程序加载大量 Flex 模块和其他 Flash 子应用程序和 Flash 资源 每次成功加载 flashlog txt 时 Flex 控制台都会显示类似 SWF filename sw
  • 如何知道指针是否在物理内存中,否则会触发页面错误?

    如果我有一个指针并且我关心内存访问性能 我可能会检查它的下一个操作是否会触发页面错误 如果可以的话 可以设计一种算法 重新排序循环操作以最大限度地减少页面错误 是否有任何可移植 或linux windows不可移植 的方法来检查特定内存地址
  • facebook API 中的刷新令牌和访问令牌

    当我们在 google api 上执行 oauth2 时 我们会获得一个访问令牌和一个刷新令牌 假设我正在编写一个服务 并且我想定期轮询更改 我可以在每次当前访问令牌失效时使用刷新令牌来获取新的访问令牌 这就是所谓的离线访问 有没有办法在
  • 将Base64图像上传到S3并返回URL

    我正在尝试使用 Python 将 Base64 图像上传到 S3 存储桶 我用谷歌搜索并得到了一些答案 但没有一个对我有用 有些答案使用 boto 而不是 boto3 因此它们对我来说毫无用处 我也尝试过这个链接 Boto3 将文件从bas
  • 如何使用 Shell 脚本在 Linux 中读取 Excel 工作表中的数据? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 每个人 我是 Linux 新手 对编写 shell 脚本非常感兴趣 这次我正在制作一个Excel表格 在该 Excel 工作表中会有 S No 在第一列中 域名在第二列中 我的 Exc
  • iframe下处理#document的方法

    对于我现在正在测试的门户 我遇到了无法创建任何 xpath 定位器的问题 过了一段时间我发现这是因为 document 这会切断路径并生成简单的 复制 xpath 将路径引导至完全不同的元素 document CODE 我发现这个问题的解决
  • Ionic:如何在 $ionicPopup 中使用 cssClass?

    所以我想修改 ionicPopup 中的默认宽度 为此我必须将 cssClass 添加到我的弹出对象中 就像下面的代码一样 scope getScore function var popupScore ionicPopup alert ti
  • ClusterManager setOnCameraIdleListener

    在尝试实施使用时ClusterManager 我注意到getMap setOnCameraChangeListener clusterManager 已弃用 查看 Github 上的 android maps utils 示例 我注意到ge
  • Xcode 4 无法从静态库依赖项中找到公共头文件

    辅助搜索的替代标题 Xcode 找不到标头 Xcode 中缺少 h 未找到 Xcode h 文件 未找到词法或预处理器问题文件 我正在开发一个来自 Xcode 3 的 iOS 应用程序项目 我现在已经迁移到 Xcode 4 我的项目构建了许