添加 /usr/include 作为 ios 应用程序的包含路径

Posted

技术标签:

【中文标题】添加 /usr/include 作为 ios 应用程序的包含路径【英文标题】:Add /usr/include as include path for ios app 【发布时间】:2014-08-22 02:21:30 【问题描述】:

我在为模拟器 ios 7.1 构建 ios 应用时发现了一个有趣的问题

如果我添加 /usr/include 作为标题搜索路径,它会告诉我 CoreFoundation/CFUserNotification.hCoreFoundation.h 中找不到。但是,正如我们从 CoreFoundation.h 中看到的:

#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
#include <CoreFoundation/CFUserNotification.h>
#include <CoreFoundation/CFXMLNode.h>
#include <CoreFoundation/CFXMLParser.h>
#endif

只有当目标是 Mac OS 时,我们才包含这个文件,这意味着构建目标变成了 Mac OS?

如果我删除这个包含路径,就没有这样的问题,那么我可以在模拟器中运行这个 ios 应用程序。为什么?


更新:我注意到ios应用程序的“系统默认头搜索路径”是/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,所以我们不需要使用/usr/include 路径,但是使用 /usr/include 作为头文件搜索路径使其无法编译仍然让我感到困惑。

【问题讨论】:

您的问题令人困惑;你暗示编译失败,但说你仍然可以运行应用程序。 @***foe 我的意思是如果我删除这个包含路径,那么我可以编译和运行。 【参考方案1】:

我认为当你在模拟器 ios 7.1 中运行它时,编译器会在模拟器 ios 7.1 中搜索 /usr/include,但是,它不存在,而你的目标是 Mac OS,编译器不会抱怨。

【讨论】:

您在同一个句子中说“运行”和“编译器”。什么意思? 您好,感谢您的回复,您能再解释一下吗?我不太明白...【参考方案2】:

信不信由你TARGET_OS_MAC 对于Mac 和 iOS 来说都是 1。

更多详情请参阅this SO answer。

【讨论】:

【参考方案3】:

对我来说,当我在我的目标而不是我的项目上添加 CFLAGS 和 C++FLAGS 时发生了这种情况。一旦我将它们放在项目中并将它们从目标中删除,问题就消失了。

【讨论】:

以上是关于添加 /usr/include 作为 ios 应用程序的包含路径的主要内容,如果未能解决你的问题,请参考以下文章

在 ios App 中添加金属支持作为可选渲染器

当我们将 Google Analytics 添加到 iOS 应用程序时,如何指定应该和不应该将哪些内容作为会话(而不是事件)进行跟踪

/usr/include 不能在 xcode 中用作搜索路径?

iOS Safari 添加到我的 Angular Web 应用程序图标的主屏幕作为屏幕截图而不是 apple-touch-icon

iOS:以编程方式添加约束获取视图高度作为唯一指标

iOS:使用 LaunchImage 作为应用背景