【问题标题】:How to teach Xcode to include all header files in output of static library project?如何教 Xcode 在静态库项目的输出中包含所有头文件?
【发布时间】:2013-10-05 21:27:57
【问题描述】:

我跟着tutorial 创建了一个静态库项目。然后我拖入我的类并将它们添加到目标中。

当我构建和运行时,它会创建一个 libUtils.a 文件。在 Finder 中显示时,包含文件夹仅包含 Xcode 在我创建项目时自动创建的第一个类的头文件。所有其他头文件都丢失了。

我仔细检查了:所有添加的类文件都是项目的一部分,检查器显示目标项目的目标成员资格复选标记。

这是 Xcode 中的一个错误,还是我必须在其他地方注册我另外创建的所有文件?

【问题讨论】:

    标签: ios xcode static-libraries


    【解决方案1】:

    Xcode 自动添加一个构建阶段以将标头复制到产品目录。您可以在此构建阶段添加新的头文件:

    更新

    您也可以改用“复制标头”构建阶段:

    Editor menu > Add Build Phase > Add Copy Headers Build Phase.

    当你将头文件添加到项目中时,它们会自动添加到其中一个类别中:

    有关此构建阶段和三个类别的更多信息来自iOS Developer Library

    【讨论】:

    • 有没有办法告诉 Xcode 自动复制它们? Xcode 不这样做的原因是什么?还是因为如果你创建一个库,你选择了什么标题是公共的?
    • 实际上,Copy Files 阶段并不是库正常工作所必需的(例如与 Compile Sources 阶段相反),因此 Xcode 只是通过举例说明如何使用来帮助您构建阶段以复制公共头文件。
    • 啊,但是当我没有在 Copy Files 阶段注册所有公共标头时,它们不会将 exportet 导出到包含目录。那么当我进行构建时,还有其他方法可以让它们导出包含目录吗?
    • "Copy Headers" -- Apple 正式告诉你不要这样做,因为他们在一年多前破坏了 Xcode 的这一部分并且懒得修复它。如果你想使用它,你必须使用变通办法(Apple 拒绝记录)将所有内容都“公开”,然后创建你自己的 RunScript 将它们移动到适当的位置
    • 不要使用这个解决方案,因为在我的一个静态库中使用了这种方法,我被企业发行版吸了一整天。
    【解决方案2】:

    添加头文件

    Xcode 10.2.1

    Project editor -> select a target -> Build Phases -> + Add a new Build Phase -> New Header Phase
    

    第二步,添加.h文件

    //Build Phases
    Project editor -> select a target -> Build Phases -> Headers -> add files to the **public** zone
    //or
    //Target Membership
    Select `.h` file -> Select File Inspectors Tab -> Target Membership -> Select the target and make it **public**
    

    [Target Membership]

    【讨论】:

    • 感谢亚历克斯!其他帖子不是最新的,对于较旧的 xcode 版本有很多答案......花了一段时间才找到你的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多