【问题标题】:What is $(inherited) in Xcode's search path settings?Xcode 的搜索路径设置中的 $(inherited) 是什么?
【发布时间】:2013-02-26 21:32:10
【问题描述】:

$(inherited) 搜索路径设置是什么?

我已经修改了有关适用于 iPad 的 OpenSSL 的标头和库搜索路径设置,这个问题以及给定路径的递归选项是罪魁祸首。

当我重新排列搜索路径以首先查看目录然后查看 $(inherited) 时,iPad 构建工作正常。

【问题讨论】:

    标签: xcode


    【解决方案1】:

    如果您转到目标构建设置,然后切换到关卡视图

    从右到左可以看到inherited的流向

    Resolved <- Target <- xcconfig <- Project <- iOS Default
    

    所以inherited in Target 表示 Target 从 xcconfig 和 Project 继承设置

    【讨论】:

    • xcconfig 在哪里/是什么?
    • 这个答案太棒了!非常清楚最终值来自哪里。
    • 超级有用,尤其是关卡视图提示。我在一个大型项目上工作,我们实际上导入了自定义 xcconfig 文件,这些文件覆盖了更高级别的项目设置(我不知道)。 Levels 视图向我展示了继承值的确切来源。对于“教人如何钓鱼”的回答:)
    • @ricardo 正在寻找您的 xcconfig 文件,请尝试 find . -name '*xcconfig' -printfind . -name '*xcconfig' -print -exec grep OTHER_LDFLAGS {} \;
    【解决方案2】:

    我也在寻找文档。但我获得了经验,$(inherited) 可用于将构建设置从项目级别继承到目标级别。在项目级别定义库或标头搜索路径时,您可以在目标构建设置中使用$(inherited),以便在项目目标的搜索路径中使用这些搜索路径。

    【讨论】:

    • 我认为这实际上是 $(inherited),而不是 $(inherit)。
    【解决方案3】:

    覆盖示例通过在 xcconfig 文件中重新分配该变量的值,在项目或目标级别上设置设置变量。

    // Variable set in the project file, previous level
    OTHER_LDFLAGS = -ObjC
    
    // lib.xcconfig
    OTHER_LDFLAGS = -framework Security
    

    ^ 使用它进行编译时,OTHER_LDFLAGS -ObjC 的先前值将被新值 -framework Security 覆盖。

    继承示例通过附加到 xcconfig 文件中该变量的先前值,在项目或目标级别上设置设置变量。将$(inherited) 视为一个特殊变量,可用于获取变量的现有值,因此对同一变量的赋值不会造成破坏。

    // Variable set in the project file, previous level
    OTHER_LDFLAGS = -ObjC
    
    // lib.xcconfig
    OTHER_LDFLAGS = $(inherited) -framework Security
    

    ^ 编译时,OTHER_LDFLAGS 的值为-ObjC -framework Security

    https://pewpewthespells.com/blog/xcconfig_guide.html 找到的示例

    【讨论】:

    • 解释得很好。 ty
    • 项目文件中没有设置 $(inherited) 标志而不是 lib.xcconfig 吗?
    【解决方案4】:

    附录: $(inherited) Build Settings->Library Search Path 在您通过单击 Target Membership 右侧窗格将库添加到目标时自动填充。否则不会发生这种情况。

    【讨论】:

    • 我没有发现这种情况,至少在 Xcode 7 中不是这样。我在项目和目标中都设置了 $(inherited) (也分别尝试过),然后向我的特定目标添加了一个自定义框架,但它没有被添加到搜索路径中。我错过了一步吗?
    • 很难跟上 Xcode 的更新......它可能已经改变了。
    【解决方案5】:

    Xcode $(继承)

    [Xcode ${<variable_name>} syntax]

    Xcode 变量可以定义在不同的级别(Project、.xcconfig、Target、Default)。当您使用Build Settings -&gt; Levels 标签时,您可以检查层次结构和已解决结果

    $(inherited) 使用来自超级级别的变量值。

    请注意几点:

    • 当您应该连接像$(inherited)-myPrefix 这样的结果值时,它很有用。用作独立表达式并不是那么有用,因为即使您从后继对象中删除$(inherited) 或任何其他值(目标是项目的后继对象),Xcode 也会自动根据前身更改此值

    • 您可以在项目级别和目标级别设置.xcconfig,这就是结果层次结构不恒定的原因

    Resolved <- Target <- Target .xcconfig <- Project <- Project .xcconfig <- Default
    

    例如目标 = $(inherited)

    .xcconfig 在项目级别

    .xcconfig 在目标级别

    [.xcconfig]

    [CocaPods inherit!]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 2011-06-23
      相关资源
      最近更新 更多