【问题标题】:Header Search Path Objective C标头搜索路径目标 C
【发布时间】:2015-01-24 22:48:25
【问题描述】:

我正在尝试运行一个包含一些头文件的项目,但这些头文件的路径是头文件的实际位置,例如“../../../FMRuntimeHelpers/Classes/FMRuntimeHelpers.h”。

现在编译器不考虑这个路径(../../../FMRuntimeHelpers/Classes/FMRuntimeHelpers.h)来定位实际的头文件及其内容,如@interface等。虽然它认为这是Objective C代码并生成错误:“预期标识符或'('”。

请提出建议。我需要做什么来解决它?如何定义这个相对路径?我以这种方式拥有数千个文件,因此将这些文件替换为原始文件将花费大量时间。

【问题讨论】:

  • 看看这个答案是否有帮助...... stackoverflow.com/questions/14003494/…
  • 该文件不是有效的 .h 文件,您不能只在其中放置路径,您需要在路径前添加 #import 或 #include ......另外,看起来像这样路径是文件本身,为什么需要包含文件本身?
  • 如果我在查找器中导航到此路径(../../../FMRuntimeHelpers/Classes/FMRuntimeHelpers.h),我发现 FMRuntimeHelpers.h 具有有效的标题内容。我不明白为什么以这种方式引用有效头文件的路径。我以这种方式拥有数千个文件,因此甚至无法用原始标题替换所有文件。

标签: ios objective-c xcode xcode6 cocoapods


【解决方案1】:

方法一:

  • 在 Xcode 的首选项中选择“Source Tree”选项卡。此处添加的路径将是系统级路径,可用于所有项目。

  • 在项目信息的构建设置中设置 HEADER_SEARCH_PATHS 参数。我在这里添加了“${SRCROOT}”,没有递归。此设置适用于大多数项目。

方法二:

Xcode 使用具有 GCC 兼容命令集的 Clang。 GCC has an option -Idir 添加系统标头搜索路径。此选项可通过 Xcode 项目构建设置中的 HEADER_SEARCH_PATHS 访问。

但是,添加到此设置的路径字符串不应包含任何空白字符,因为该选项将按原样传递给 shell 命令。

但是,一些 OS X 用户(比如我)可能会将他们的项目放在路径上,包括应该转义的空格。如果您手动输入它,您可以像 /Users/my/work/a\ project\ with\ space 一样对其进行转义。您也可以用引号对它们进行转义,以使用“${SRCROOT}”等环境变量。

或者只是使用 .表示当前目录。我在Webkit的源码上看到了这个trick,但是我不确定当前目录在构建时会设置为项目目录。

${SRCROOT} 是 Xcode 预定义的值。这意味着源目录。您可以在Reference document 中找到更多值。

【讨论】:

    【解决方案2】:

    您可以通过 Target->Build Settings->Header Search Paths 手动添加此标头搜索(您可以在其中添加相对路径,如 ../../),只需在项目中使用头文件即可。

    【讨论】:

    • 在“标头搜索路径”中添加标头“../../”。清理并构建项目,仍然面临同样的错误。也尝试使用“../../../”。
    【解决方案3】:

    如果你的 Xocde 版本是 6.1,你需要像 pic 一样设置它的首选项,并将 xcode build 作为你的目标设置

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 2013-07-13
      • 2020-05-03
      • 2023-03-18
      • 2023-03-23
      相关资源
      最近更新 更多