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

Invalid deployment target for -stdlib=libc++ on OSX 10.8

本文关键字:部署 目标 无效 libc++ -stdlib OSX      更新时间:2023-10-16

我正在通过node-gyp编译一个节点。用C++编写的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" ],
}
]
}

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

你知道我该怎么解决这个问题吗?

当您获得OS X 10.8时,clang将尝试构建它,以便它也可以在其他旧的OS X版本上运行。现在,由于-stdlib=libc++需要10.7的最低版本,除非您通过指定明确告诉它将使用10.7(或更高版本)作为部署目标,否则它不会编译它

'MACOSX_DEPLOYMENT_TARGET': '10.7'

在CCD_ 4内部。

在您的情况下,完整的设置应该看起来像:

{
"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" ],
}
]
}

我不知道什么对你有效,@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" ],
}
]
}