XCode:未知类型名称“SCREEN”,仅在构建发布时,在文件“unctrl.h”中
Posted
技术标签:
【中文标题】XCode:未知类型名称“SCREEN”,仅在构建发布时,在文件“unctrl.h”中【英文标题】:XCode: Unknown type name 'SCREEN', only when building for release, in file 'unctrl.h' 【发布时间】:2017-06-11 16:05:54 【问题描述】:XCode 在这个文件中发现错误:
/opt/local/include/unctrl.h
消息:未知类型名称“屏幕”
/opt/local/include/
必须在我的标题搜索路径中。在标题搜索路径中添加/usr/include/
之前没有区别。 XCode 仍然坚持使用在/opt/local/include/
中找到的版本。在/usr/include/
下找到的版本没有触发错误的行,但XCode 不愿意使用该版本。
XCode 版本:8.3.3
为 macOS 应用程序编译桥接头文件时发生错误。
“清洁产品”没有区别。
该错误仅在将macos部署目标设置为10.12时出现,并且仅在发布配置中出现。
部署目标 10.11 - 调试构建 - 没有错误 部署目标 10.11 - 发布版本 - 无错误 部署目标 10.12 - 调试构建 - 无错误 部署目标10.12 - 发布版本 - 错误【问题讨论】:
我升级了 MacPorts,它为我解决了问题:sudo port selfupdate; sudo port upgrade outdated
【参考方案1】:
发生的情况是您得到混合的头文件,一些来自 MacPorts 安装,另一些来自系统,并且它们不兼容。它正在加载 ncurses.h
的 SDK.12 版本(在加载 unctrl.h
之后定义了 SCREEN),但加载了 unctrl.h
的 MacPorts 版本(需要定义 SCREEN)。
我最终通过将 MacPorts 包含目录指定为系统包含目录解决了这个问题,因此通过指定包含搜索路径,它将用于 包含以及“”包含:
-cxx-isystem/opt/local/include
而不是
-I/opt/local/include
【讨论】:
另外,我必须在 Xcode 构建设置中将“启用模块”设置为“否”。 我通过完全删除 macports 并改用自制软件解决了这个问题。【参考方案2】:我发现了。问题是我有几个带有框架的子项目,而这些子项目的部署目标都小于 macOS 10.12。
但是,当将主项目的部署目标设置为 10.11 时,子项目仍然会有混合部署目标,因为其中一些项目的部署目标是 10.10。由于某种原因,这与主项目的部署目标设置为 10.11 无关,只有当主项目的部署目标设置为 10.12 时。
无论什么原因,将所有子项目和主项目的部署目标设置为 10.12 解决了问题。
【讨论】:
以上是关于XCode:未知类型名称“SCREEN”,仅在构建发布时,在文件“unctrl.h”中的主要内容,如果未能解决你的问题,请参考以下文章
未知类型名称'CGVector';您指的是 'CIVector' 吗?
XCode 6.0.1 - xmlParseEntityRef:Launch Screen.xib 上没有名称
RNAppAuth,iOS 构建失败,未知类型名称“命名空间”,react-native-app-auth