如何编写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
gypnode-gyp build
,然后barfed。
错误是“ld:找不到-lOpenNI2库”。
我在这里采取了错误的方法? 我已经在库声明中没有使用-l
和-Wl, -rpath ./
来尝试它-Wl, -rpath ./
但是它仍然没有生成。
几个快速选项
如果OpenNI2是一个单一的dynamic库,你可以直接添加到你的库列表
/path/to/libOpenNI2_file
如果OpenNI2是一个包的一部分,你可以使用pkg-config来获取库
pkg-config --libs OpenNI2
OpenNI有更多关于这个特定库的文档