OSX 10.8上-stdlib = libc ++的部署目标无效

时间:2014-02-13 10:56:54

标签: c++ macos flags xcodebuild node-gyp

我正在通过node-gyp编译一个用C ++编写的Node.JS包。当我编译它时,我收到以下错误:clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)。我在OSX 10.8上运行,我已经安装了XCode命令行工具。这是node-gyp用来编译包的文件:

{
  "targets": [
    {
      "target_name": "package_name",

      'type': 'executable',

      'xcode_settings': {
        'OTHER_CFLAGS': [
          "-std=c++11",
          "-stdlib=libc++"
        ],
      },

      "sources": [ "package_src.cpp" ],
    }
  ]
}

基本上它指定了编译的目标,类型和标志,以及源。

有关如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:8)

虽然你有OS X 10.8 clang会尝试构建它,以便它也可以在其他较旧的OS X版本上运行。既然-stdlib=libc++需要最低版本10.7,它就不会编译它,除非你明确告诉它你通过指定

使用10.7(或更高版本)作为部署目标
'MACOSX_DEPLOYMENT_TARGET': '10.7'

xcode_settings内。

在您的情况下,完整设置应如下所示:

{
  "targets": [
    {
      "target_name": "package_name",

      'type': 'executable',

      'xcode_settings': {
        'MACOSX_DEPLOYMENT_TARGET': '10.7',

        'OTHER_CFLAGS': [
          "-std=c++11",
          "-stdlib=libc++"
        ],
      },

      "sources": [ "package_src.cpp" ],
    }
  ]
}

答案 1 :(得分:2)

我不知道什么对你有用,@ drewish,但这就是我让它运作的方式:

{
  "targets": [
    {
      "target_name": "package_name",

      'type': 'executable',

      'xcode_settings': {
        'OTHER_CFLAGS': [
          "-std=c++11",
      "-stdlib=libc++",
      "-mmacosx-version-min=10.7"
        ],
      },

      "sources": [ "overcpu.cpp" ],
    }
  ]
}