XCode:未知类型名称'SCREEN',仅在构建发布时,在'unctrl.h'文件中

Bal*_*zar 2 xcode bridging-header macos-sierra

XCode在此文件中找到错误:

/opt/local/include/unctrl.h
Run Code Online (Sandbox Code Playgroud)

消息:未知类型名称'SCREEN'

/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 - 发布版本 - 错误

Jer*_*rry 5

发生的事情是你得到了混合的头文件,一些来自MacPorts安装,另一些来自系统,并且它们不兼容.它正在加载SDK.12版本ncurses.h(加载定义了SCREEN unctrl.h),但是MacPorts版本unctrl.h(需要定义SCREEN).

我最终通过将MacPorts include目录指定为系统包含目录来解决此问题,因此它将用于<> includes以及""包括指定包含搜索路径:

-cxx-isystem/opt/local/include
Run Code Online (Sandbox Code Playgroud)

而不是

-I/opt/local/include
Run Code Online (Sandbox Code Playgroud)