自从在 Xcode 9(以前的 8.2)中打开我的项目以来,几个静态库和框架目标无法编译并出现大量错误。这种循环依赖错误总是位于顶部。
一个例子是 libzip 的静态库目标。问题源于系统 zlib 库的单个 #include:
#include <zlib.h>
Run Code Online (Sandbox Code Playgroud)
大多数目标可以通过使用构建设置启用模块(C 和 Objective-C)禁用模块来解决此问题。
我有一个 Swift/C 框架,它定义了几个模块,但这不是解决方案。
许多错误都与 相关tgmath.h,这因模块使用不当而臭名昭著。我不确定为什么 tgmath 甚至被包含在内 - 它在 Darwin 模块映射中被明确标记。我很想检查,<module-includes>:28但我不知道如何检查。
这是编译错误的示例。有人知道如何在 Xcode 9 中解决这个问题吗?
#include <zlib.h>
Run Code Online (Sandbox Code Playgroud)
最后的问题是遗留的自定义Header Search Path。它有一个对 SDK 的明确引用,XcodeDefault.xctoolchain/usr/include/c++/v1. 在搜索路径中包含这些标头会扰乱依赖循环保护。