Я собираю через node-gyp
пакет Node.JS, написанный на C ++. Когда я его компилирую, я получаю следующую ошибку: 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'
внутри 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" ],
}
]
}
Я не знаю, что сработало для вас, @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" ],
}
]
}