1. create a C++ file.
2. create a file called binding.gyp which describes the configuration to build your module in a JSON-like format.
$ npm install -g node-gyp //node.js native addon build tool
$ node-gyp configure //generate the appropriate project build files for the current platform
$ node-gyp build
$node-gyp configure build
$node-gyp clean //Removes the build directory if it exists
boost addon test code
#include <node.h>
#include <v8.h>
#include <iostream>
#include <string>
#include <boost/random.hpp>
using namespace v8;
using namespace boost;
void Random(const FunctionCallbackInfo<Value>& args) { //random(iterator,min,max)
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
mt19937 gen;
if(args[1]->NumberValue()<=args[2]->NumberValue()){
uniform_int<> dst(args[1]->NumberValue(),args[2]->NumberValue());
variate_generator<mt19937,uniform_int<> > rand(gen,dst);
Local<String> val = String::NewFromUtf8(isolate, “Return : “);
for(int i = 0; i != args[0]->NumberValue(); ++i){
Local<Number> jmTest = Number::New(isolate, rand());
val = String::Concat(val, String::NewFromUtf8(isolate, ” “));
val = String::Concat(val, jmTest->ToString());
}
args.GetReturnValue().Set(val);
}else{
uniform_int<> dst(args[2]->NumberValue(),args[1]->NumberValue());
variate_generator<mt19937,uniform_int<> > rand(gen,dst);
Local<String> val = String::NewFromUtf8(isolate, “Return : “);
for(int i = 0; i != args[0]->NumberValue(); ++i){
Local<Number> jmTest = Number::New(isolate, rand());
val = String::Concat(val, String::NewFromUtf8(isolate, ” “));
val = String::Concat(val, jmTest->ToString());
}
args.GetReturnValue().Set(val);
}
}
void init(Handle<Object> exports) {
NODE_SET_METHOD(exports, “random”, Random);
}
NODE_MODULE(boost, init)
binding.gyp file
{
“targets”: [
{
“target_name”: “boost”,
“sources”: [ “boost.cc” ],
“include_dirs”: [
“/usr/local/include/boost”,
],
“libraries”: [
“/usr/local/lib/libboost_random.dylib”
],
“cflags_cc!”: [ “-fno-rtti”, “-fno-exceptions” ],
“cflags!”: [ “-fno-exceptions” ],
“conditions”: [
[ ‘OS==”mac”‘, {
“xcode_settings”: {
‘OTHER_CPLUSPLUSFLAGS’ : [‘-std=c++11′,’-stdlib=libc++’, ‘-v’],
‘OTHER_LDFLAGS’: [‘-stdlib=libc++’],
‘MACOSX_DEPLOYMENT_TARGET’: ‘10.7’,
‘GCC_ENABLE_CPP_EXCEPTIONS’: ‘YES’
}
}]
]
}
]
}
Recent Comments