Node-gyp не может скомпилировать расширение nodejs (файл ‘fatal error, thread’ not found)

У меня есть это расширение узла, сделанное коллегой, и я пытаюсь скомпилировать его через node-gyp configure (все в порядке), а затем node-gyp build (fatal error, 'thread' file not found). Теперь я считаю, что это проблема GCC, и я прочитал где-то, что мне нужно, как флаг -stdlib=libc+++, мой binding.gyp файл выглядит так:

{
"targets": [
{
"target_name": "overcpu",
"sources": [ "overcpu.cpp" ],
"cflags" : [ "-stdlib=libc++" ]
}
]
}

Но я все еще получаю ошибку. Я установил XCode и инструменты разработчика, более того, не доволен, я установил gcc через brew, К сожалению, я продолжаю получать ту же ошибку.
При выполнении gcc -v Я получаю следующий вывод:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix

Что-то не так с моим gcc, либо это node-gyp (v1.0.1) что сводит меня с ума?

Большое спасибо!

2

Решение

Вы должны также добавить -std=c++11 на ваш cflags список аргументов для полной активации поддержки C ++ 11.

ОБНОВИТЬ: Специально для OSX ( cflags должен работать на BSD и Linux), вам также необходимо добавить условие внутри targets настройки вроде так:

{
"targets": [
{
"target_name": "overcpu",
"sources": [ "overcpu.cpp" ],
"cflags" : [ "-std=c++1", "-stdlib=libc++" ],
"conditions": [
[ 'OS!="win"', {
"cflags+": [ "-std=c++11" ],
"cflags_c+": [ "-std=c++11" ],
"cflags_cc+": [ "-std=c++11" ],
}],
[ 'OS=="mac"', {
"xcode_settings": {
"OTHER_CPLUSPLUSFLAGS" : [ "-std=c++11", "-stdlib=libc++" ],
"OTHER_LDFLAGS": [ "-stdlib=libc++" ],
"MACOSX_DEPLOYMENT_TARGET": "10.7"},
}],
],
}
]
}
9

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


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