1.cmake编辑opencv的源代码路径(带有makelist的目录),生成opencv相关lib文件.configure两次后,点击生成(cmake中选择安装的以依赖库,如果缺少相应的依赖库,就算成功生成了的OpenCV功能也会有问题的,建议的NuGet下载)
configure失败,可以看看上面的参数,手动修改参数后继续configure
generate失败,可以修改*.cmake文件重新编译
cmakelist.txt文件中url包含(根据findpackage指定的/module/cmake文件下载对应的版本),外部文件的地址
编译x64版本
2.添加opencv包括目录到项目进行vc开发,如果要在nodejs中使用opencv,在编译构建完项目后出现如图项目:
编译运行vc10,生成bin文件夹和lib文件。不过nodejs中使用的目录结构是opencv bin安装包的目录结构,所以通过cmake编译出来的vc项目默认是有调和发布目录的,需要根据nodejs opencv源码readme.md中的描述,设置相应的环境变量和目录结构,nodejs opencv使用了bin和lib目录,node-gyp编译的js源码中可以看到相应的环境变量和目录结构检测代码。
3.node-gyp编译opencv过程中,出现如下WindowsSDKDir不存在错误,需要下载windows kit 8.1版本解决,并且路径环境变量中添加cl路径,保证cl能单独运行(鼠标双击无错误提示,可能需要在VS \\ common7 \ IDE目录下拷贝mspdb100.dll,mspdbcore.dll,mspdbsrv.exe文件),重启nodejs控制台。
如果出现STDDEF.H找不到,说明VC环境变量未添加,需要运行VC环境下的vcvarsall.bat,在使用NPM安装
如果node-gyp目录中的build.js错误,需要配置环境变量GYP_MSVS_VERSION = 2010 或者当前vs版本
如果以上配置还不行,单独测试node-gyp configure build C ++ demo,如下地址:
http://www.cnblogs.com/yupeng/p/3469444.html
http://wiki.jikexueyuan.com/project/nodejs/addons.html
https://github.com/nodejs/node-addon-examples
node-gyp configure显示编译C ++的配置node- gyp 最终生成* .node 二进制文件,供nodejs调用
npm init为项目创建package.json(项目依赖配置)
最终在窗户上还是编译错误:
在C盘全局节点配置中node-gyp中查到,node- gyp 使用的3.6.1的版本中的v8.h和node.h使用的VS2015或者更高的版本,而我用的VS2010,只支持C ++ 11标准,对于C ++ 14和17都不支持,CL编译起有差别导致编译错误解决办法:下载的NodeJS开源代码的老本本支持VS2010的,节点-GYP构建vcproject后,手动添加的NodeJS包括生成节点文件。
安装纯净版的nodejs:http://www.cnblogs.com/SCOOL/p/4054045.html(下载npm源码:node cli.js install npm -gf手动安装npm)
4.nodejs下的opencv(windows下需要先单独安装opencv (nodejs调用vc opencv库),cmake和使用tbb第三方框架编译,有的opencv需要单独下载tbb)
nodejs参考:http://www.runoob.com/nodejs/nodejs-npm.html
npm安装查询数据库工具
npm config | npm config ls查看配置npm config set key value
npm ls查看目录结构npm list -g查看安装的包npm list模块名
NPM-GYP源码编译的C ++扩展(蟒还有GYP和scons的构建项目)
node-gyp configure错误:http://blog.csdn.net/lengyoumo/article/details/72235131
npm update更新当前项目或着指定模块
npm init在当前生成pakage.json文件
npm-pre-gyp二进制包C ++扩展
npm-install -g grunt-node-inspector简单配置
npm-install --production安装错误报告(json> =改成〜)
npm install -d(--save-dev) -s(--save)
nodejs-opencv需要安装c ++版本的opecv在目录build下配置环境变量OPENCV_DIR并添加路径路径%OPENCV_DIR \ bin%
nodejs淘宝镜像安装:( - g全局安装(node_module下的npm目录npmrc配置前缀和缓存),否则本地安装,下载文件到cmd启动目录)
node_module中大部分源码都有typescript定义
nodejs项目和网页js不同,nodejs不包含navigator等对象
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
项目依赖安装:npm install(安装到本地-g安装到nodejs目录下代码中要求只能查找到npm install的模块)
项目运行:node index.js运行js程
项目调试: node inspect index.js调试
5.常用的npm模块有(npm是nodejs包管理器,npm独立网站)
npm可以方便的发布自己的模块,使用开源的模块,由于模块众多,vscode开发的使用的时候install后,可以方便的查看module源码,了解其功能。
模块名 | 作者 | 简介 |
async | caolan | 异步操作管理 |
bl | rvagg | 二进制数据解析 |
bluebird | petkaantonov | 异步操作管理 |
browserify | substack | 发布浏览器可用的包 |
bunyan | trentm | 日志(logging)管理 |
chai | jakeluer | 断言 |
chalk | sindresorhus | 命令行彩色输出 |
co | tjholowaychuk | 异步流程管理 |
colors | marak | 命令行彩色输出 |
commander | tjholowaychuk | 命令行工具 |
debug | tjholowaychuk | Debug输出器 |
dockerode | apocas | Docker管理 |
duplexify | mafintosh | Stream流操作工具 |
event-stream | dominictarr | Stream流操作工具 |
express | tjholowaychuk | Server服务器框架 |
glob | isaacs | 文件名匹配 |
grunt | cowboy | 构建工具 |
gulp | contra | 构建工具 |
hapi | hueniverse | Server服务器框架 |
hyperquest | substack | 轻量级HTTP客户端 |
istanbul | gotwarlost | 测试用例覆盖率分析 |
JSONStream | dominictarr | Stream流管理工具 |
koa | tjholowaychuk | Server服务器框架 |
levelup | rvagg | LevelDB |
lodash | jdalton | 函数式编程工具 |
log4js | nomiddlename | 日志(logging)管理工具 |
minimatch | isaacs | 文件名匹配 |
minimist | substack | 命令行操作 |
mocha | tjholowaychuk | 单元测试 |
moment | timrwood | 日期时间输出 |
mongodb | christkv | MongoDB |
mysql | felixge | MySQL |
nconf | indexzero | 配置工具 |
needle | tomas | 轻量级HTTP客户端 |
node-fetch | bitinn | Fetch API |
nodemailer | andris9 | Email客户端 |
passport | jaredhanson | 登录和认证 |
pg | brianc | Postgres |
pump | mafintosh | Stream流管理工具 |
redis | mjr | Redis |
request | mikeal | HTTP客户端 |
restify | mcavage | REST API搭建 |
socket.io | rauchg | WebSocket实时通信 |
split2 | matteo.collina | Stream流管理工具 |
tape | substack | 单元测试 |
through2 | rvagg | Stream流管理工具 |
underscore | jashkenas | 函数式编程工具 |
ws | einaros | Websockets |
xml2js | leonidas | XML转换为JavaScript |