【问题标题】:How to tell Xcode how to include a library specified with angle brackets?如何告诉 Xcode 如何包含用尖括号指定的库?
【发布时间】:2013-08-04 06:34:24
【问题描述】:

我经常在Xcode/Objective-C实现文件中看到开源代码导入第三方库是这样的:

#import <ThirdPartyLibrary/utilities.h>

但是当我在我的项目中拖放此类库的文件结构和文件时,所有这些导入都已损坏,Xcode 不知道文件在哪里。

我最终手动修改每个导入看起来像:

#import "utilities.h"

并且包含似乎是相对于文件系统上的当前物理文件夹。当一个库将其文件拆分到文件系统上的文件夹中并将其拖放到 Xcode 中时,Xcode 会为这些文件夹创建组。但是对于导入,我必须指定文件夹名称。问题是当我在一个文件夹中时,例如:

http/httpTools.h

那么当httpTools.h要从根目录导入utilities.h时,我得改一下

#import <ThirdPartyLibrary/utilities.h>

#import "../utilities.h"

这是一件苦差事。这样做了 5 个小时后,我想该死的,一定有更好的方法。有人可以解释教 Xcode 一个可以用尖括号导入的新框架位置的秘诀是什么吗?顺便说一句,框架是源代码。未编译。只是赤裸裸的代码。

【问题讨论】:

  • 这不是 Xcode,而是编译器。无论如何,你必须扩展编译器的头文件搜索路径;这可以通过在 GCC 和 Clang 的情况下指定 -I&lt;directory&gt; 编译器标志来完成。
  • 我也遇到了类似的问题,与其拖入文件,不如在标题搜索路径xcode设置中包含相关目录。
  • 你是导入第三方框架还是完整源代码?
  • @H2CO3 你将如何为一个名为“TheLibrary”的库指定它,你将编译器标志放在哪里?
  • @openfrog clang -I/path/to/TheLibrary 等。编译器标志将被放入编译器命令行的调用中。如果您使用的是 Xcode,那么构建设置中可能有一个名为“包含路径”或类似内容的部分。

标签: ios objective-c c xcode


【解决方案1】:

偶然发现了同样的问题,Xcode中有两种搜索路径:

Header Search Paths
User Header Search Paths

如果您将自己的包含文件夹添加到标题搜索路径中,您可以使用尖括号。

【讨论】:

    【解决方案2】:

    使用编译器标志 -I 或 Xcode 构建设置别名 HEADER_SEARCH_PATHS 指定包含路径。当然,你可以在这样做的时候使用构建变量。

    【讨论】:

    • 在我的情况下不起作用。似乎 xcode 仅从系统库中搜索括号之间指定的标头。
    • 您不能只添加include。请改用$(SRCROOT)/include/
    • HEADER_SEARCH_PATHS 对我不起作用,原因不明。添加 -I 作为编译器标志虽然有效。
    • @BenjaminPiette 这很奇怪——也许该设置是在 Xcode 的构建设置中的另一个级别定义的?
    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 2014-12-30
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多