如何编写binding.gyp来搭buildOpenNI的Node.js插件?

我试图构build一个使用OpenNI的Node.js插件。 我之前没有使用Node-gyp,因此我正在设置binding.gyp文件,以便它包含OpenNI库作为构build的一部分。 我正在编译的代码只是Hello World示例 。

我使用的binding.gyp文件是基于来自Github上的NUIMotion ,它正在做类似的事情。 这是我的:

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

以下是我所做的(在OSX中工作):

  • 创build一个名为onijs/
  • 下载并提取OpenNI
  • 复制Redist目录的内容到onijs/Redist有一个目录OpenNI2所以现在我有onijs/OpenNI2有一些驱动程序)。
  • onijs/src/文件夹复制到onijs/src/
  • 将基本的“Hello World”复制到onijs/src/main.cpp
  • 把我的onijs/文件放在onijs/
  • 在terminal中,我做了cd /pathTo/onijs/并运行node-gyp configure cd /pathTo/onijs/ node-gyp configure ,它工作正常
  • 然后,我运行node-gyp build gyp node-gyp build ,然后barfed。

错误是“ld:找不到-lOpenNI2库”。

我在这里采取了错误的方法? 我已经在库声明中没有使用-l-Wl, -rpath ./来尝试它-Wl, -rpath ./但是它仍然没有生成。

几个快速选项

如果OpenNI2是一个单一的dynamic库,你可以直接添加到你的库列表

 /path/to/libOpenNI2_file 

如果OpenNI2是一个包的一部分,你可以使用pkg-config来获取库

 pkg-config --libs OpenNI2 

OpenNI有更多关于这个特定库的文档