У меня есть это расширение узла, сделанное коллегой, и я пытаюсь скомпилировать его через 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) что сводит меня с ума?
Большое спасибо!
Вы должны также добавить -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"},
}],
],
}
]
}