今天在写electron的项目时,需要使用到robotjs。
而robotjs是c++编写的库,所以需要在不同的平台进行重新编译。
期间遇到了许多问题,mark一下。
问题来源
所有代码最终是要转换为操作系统相关代码,才能在指定的OS上运行。
像java,python这类代码是需要对应平台的vm环境,转成平台相关代码才能够执行。
而c++并没有这样的vm环境,因此对于node的c++模块,需要先编译成平台相关的代码,才能执行。
方案
这里我采用的方式是node-gyp进行编译
整体方案如下所示,利用node-gyp,调用系统编译工具将源码编译成二进制文件。
之后node就可以调用对应的二进制文件,调用模块方法。
准备依赖
对于node的c++module,编译需要有设备安装有指定的编译工具集
例如robotjs在官网的推荐编译工具集如下:
此外还需要使用下面命令安装node-gyp ,
npm instal