首页 > 解决方案 > Clang 将 #import 语句误解为文件,而不是框架

问题描述

我有#import <customframeworkname/customframeworkname.h>。Xcode 确实在 Linked Frameworks and Libraries 下列出了框架。

但是,当使用 Clang 从命令行编译它时,它会说:

../cppsrc/stuff.mm:6:9: fatal error: 'customframeworkname/customframeworkname.h' file not found
#import <customframeworkname/customframeworkname.h>

我尝试通过执行将其更改为相对路径#import <../customfwdir/customframeworkname/Headers/customframeworkname.h>。现在它找到了文件,但由于框架包含许多头文件,它无法识别框架的内部头文件,其中使用#import <customframeworkname/otherheader.h>. 显然,改变整个框架会很糟糕。

我是 macOS 开发的超级新手,任何正确方向的提示都将不胜感激!

附加上下文:构建一个跨平台 node.js 插件,这就是我通过命令行编译它的原因,特别是 node-gyp。Node-gyp 有一个命令来生成一个 xcode 项目文件,我用它来检查以确保我在绑定文件中定义的构建设置正确地转换为 xcode 设置。

{
  "targets": [
    {
      "target_name": "myproj",
      "cflags!": [ "-fno-exceptions" ],
      "cflags_cc!": [ "-fno-exceptions" ],
      "sources": [ 
        "cppsrc/wrapper.cc"
      ],
      "conditions": [
        ["OS=='mac'", {
          "xcode_settings": {
            "FRAMEWORK_SEARCH_PATHS": "$(SRCROOT)/**"
          },
          "link_settings": {
            "libraries": [
              "customfws/fwname.framework"
            ]
          },
          "sources": [
            "cppsrc/stuff.mm"
          ]
        }]
      ],
      "include_dirs": [
        "<!@(node -p \"require('node-addon-api').include\")"
      ],
      'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ]
    }
  ]
}

标签: objective-cxcodemacosclangnode-gyp

解决方案


推荐阅读