我正在通过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" ],
}
]
}
基本上它指定了编译的目标,类型和标志,以及源。
有关如何解决此问题的任何想法?
答案 0 :(得分:8)
虽然你有OS X 10.8 clang会尝试构建它,以便它也可以在其他较旧的OS X版本上运行。既然-stdlib=libc++
需要最低版本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" ],
}
]
}