¿Cómo se debería escribir binding.gyp para construir un complemento Node.js con OpenNI?

Estoy tratando de construir un complemento Node.js que haga uso de OpenNI. No he usado Node-gyp antes, así que estoy tratando de configurar el archivo binding.gyp para que incluya la biblioteca OpenNI como parte de la comstackción. El código que estoy comstackndo en realidad es solo el ejemplo de Hello World .

El archivo binding.gyp que estoy usando se basa en el de NUIMotion en Github, que está haciendo algo similar. Aquí está el mío:

{ "targets": [ { "target_name": "onijs", "sources": [ "src/main.cpp" ], "include_dirs": [ "./src/Include" ], "libraries": [ "-lOpenNI2", "-Wl,-rpath ./" ] } ] } 

Esto es lo que he hecho (trabajando en OSX):

  • Creó una carpeta de proyecto de nodo llamada onijs/
  • Descargado y extraído de OpenNI
  • Copié el contenido del directorio Redist en onijs/ ( Redist tiene un directorio OpenNI2 así que ahora tengo onijs/OpenNI2 con algunos controladores).
  • Copió la carpeta de onijs/src/ en onijs/src/
  • Copió el “Hello World” onijs/src/main.cpp en onijs/src/main.cpp
  • binding.gyp mi archivo onijs/ en onijs/
  • En una terminal hice cd /pathTo/onijs/ y ejecuté node-gyp configure , que funcionó bien
  • Luego corrí la node-gyp build , y barfé.

El error es “ld: biblioteca no encontrada para -lOpenNI2”.

¿Estoy tomando el enfoque equivocado aquí? Lo he intentado sin el -l y -Wl, -rpath ./ en la statement de las bibliotecas, pero todavía no se construye.

Un par de opciones rápidas.

Si OpenNI2 es una biblioteca dinámica única, puede agregarla directamente a su lista de bibliotecas

 /path/to/libOpenNI2_file 

Si OpenNI2 es parte de un paquete, es posible que pueda usar pkg-config para obtener las bibliotecas con

 pkg-config --libs OpenNI2 

Hay más documentación sobre esta biblioteca específica aquí en OpenNI