biding.gyp介绍
- 定义全局变量
‘arch%’: ‘<!(node config.js <(target_arch))’‘arch%’: ‘<!(node config.js <(target_arch))’
config.js根据不同的cput架构映射不同的目录结构
config.js
if (process.argv.length == 3) {
var arch = process.argv[2];
if (arch === "ia32") {
console.log("x86");
} else if (arch === "x64") {
console.log("x64");
} else {
console.log("unkown");
}
}
- 定义Copy任务
“dependencies” : [ “compare_image” ]
项目构建之后执行Copy任务
编译手顺
- 配置node-gyp环境
npm install -g node-gyp
npm install --global --production windows-build-tools
- 进入到add on 目录
cd addon/src/compare-image
- 安装 opencv2 vc12环境,修改binding.gyp的第三行,把路径修改成你的opencv目录
'OPENCV_DIR%': 'D:/work-software/opencv',
- 编译64位
node-gyp clean configure build --verbose --arch=x64
- 编译32位
node-gyp clean configure build --verbose --arch=ia32
- 确认输出output
|addon
|__bin
| |__x64
| | |__compare_image.node
| | |__opencv_core2410.dll
| | |__opencv_highgui2410.dll
| | |__opencv_imgproc2410.dll
| |__x86
| | |__compare_image.node
| | |__opencv_core2410.dll
| | |__opencv_highgui2410.dll
| | |__opencv_imgproc2410.dll
binding.gyp
{
'variables': {
'opencv_dir%': 'd:/work-software/opencv',
'arch%': '<!(node config.js <(target_arch))'
},
"targets": [
{
'target_name': "compare_image",
'sources': [ "main.cc" ,"compareimage.cc"],
'conditions': [
# node-gyp clean configure build --verbose
['os=="win"' and 'target_arch=="x64"', {
'defines': [
'windows_dbr',
],
'include_dirs': [
"<(opencv_dir)/build/include/opencv2",
"<(opencv_dir)/build/include",
"<(opencv_dir)/build/include/opencv"
],
'libraries': [
"-l<(opencv_dir)/build/x64/vc12/lib/opencv_core2410.lib",
"-l<(opencv_dir)/build/x64/vc12/lib/opencv_highgui2410.lib",
"-l<(opencv_dir)/build/x64/vc12/lib/opencv_imgproc2410.lib"
]
}],
# node-gyp clean configure build --verbose --arch=ia32
['os=="win"' and 'target_arch=="ia32"',{
'defines': [
'windows_dbr',
],
'include_dirs': [
"<(opencv_dir)/build/include/opencv2",
"<(opencv_dir)/build/include",
"<(opencv_dir)/build/include/opencv"
],
'libraries': [
"-l<(opencv_dir)/build/x86/vc12/lib/opencv_core2410.lib",
"-l<(opencv_dir)/build/x86/vc12/lib/opencv_highgui2410.lib",
"-l<(opencv_dir)/build/x86/vc12/lib/opencv_imgproc2410.lib"
]
}]
]
},
{
"target_name": "copy_binary",
"type":"none",
"dependencies" : [ "compare_image" ],
"copies":
[
{
'destination': '<(module_root_dir)/../../bin/<(arch)/',
'files': ['<(module_root_dir)/build/release/compare_image.node']
},
{
'destination': '<(module_root_dir)/../../bin/<(arch)/',
'files': ['<(opencv_dir)/build/<(arch)/vc12/bin/opencv_core2410.dll',
'<(opencv_dir)/build/<(arch)/vc12/bin/opencv_highgui2410.dll',
'<(opencv_dir)/build/<(arch)/vc12/bin/opencv_imgproc2410.dll'
]
}
]
}
]
}