Недопустимая цель развертывания для -stdlib = libc ++ в OSX 10.8

Я собираю через 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" ],
}
]
}

В основном это указывает цель компиляции, тип и флаги, а также источники.

Любая идея о том, как я могу решить эту проблему?

5

Решение

Пока у вас есть 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" ],
}
]
}
8

Другие решения

Я не знаю, что сработало для вас, @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" ],
}
]
}
2

По вопросам рекламы [email protected]