Заставить node-gyp использовать C++11

Итак, я возился с функцией дополнений C/C++ с NodeJS, однако, поскольку я относительно новичок в этой концепции, я столкнулся с большой проблемой. По сути, моя программа на C++, которую я написал, требует библиотеки RegEx, но когда я запускаю node-gyp rebuild, я получаю следующую ошибку.

CXX(target) Release/obj.target/addon/main.o
../main.cpp:15:10: fatal error: 'regex' file not found
#include <regex>
         ^
1 error generated.

При сборке моего проекта с помощью Xcode (я использую Mac), прежде чем я начал превращать его в надстройку C/C++, проект отлично строился и работал, как и ожидалось.

Я немного покопался и считаю, что библиотека регулярных выражений доступна только в С++ 11, хотя я не совсем уверен, использует ли это node-gyp, так как я смогу построить, используя это вместо значения по умолчанию, или иным образом включить библиотеку вручную (если вы можете это сделать).

Моя программа выглядит так,

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <regex> <-- Throws Error Here

#include <node.h>

using namespace v8;

// Rest of the code (compiler doesn't reach past this point)

Мой файл binding.gyp выглядит следующим образом:

{
  "targets": [
    {
      "target_name": "addon",
      "sources": [ "main.cpp" ]
    }
  ]
}

Спасибо


person Oli Callaghan    schedule 03.03.2017    source источник


Ответы (1)


Итак, это было так же просто, как отредактировать файл bindings.gyp, чтобы он выглядел следующим образом, что означает, что он построен с использованием C++11.

{
  "targets": [
    {
      "target_name": "addon",
      "sources": [ "main.cpp" ],
      'xcode_settings': {
        'OTHER_CFLAGS': [
          "-std=c++11",
          "-stdlib=libc++"
        ],
      }
    }
  ]
}
person Oli Callaghan    schedule 03.03.2017