记录开发Nodejs c++ addon的一些经验(三、关于node-gyp)
2017-09-26 15:20
2066 查看
关于node-gyp如何进行编译,我想它的官网已经说的很详细了:
https://github.com/nodejs/node-gyp
但是我感觉关于binding.gyp文件的语法规则还是说的不明确,大概是因为它本身也不属于node-gyp的范畴吧
gyp文件的语法规则的官方文档应该是这个:https://code.google.com/p/gyp/wiki/GypLanguageSpecification
但是由于墙的原因,所以无法打开,国内我从网上找的比较好的文档是这个:
http://www.cnblogs.com/x_wukong/p/4829598.html
大部分配置都能找到。
在这里我主要说下以下两个问题:
一、引入第三方头文件和库文件
我以引入boost这个库为例,头文件的引入通过设置 include_dirs 而库的引入通过设置 link_settings。
配置文件如下:
二、关于编译的架构(也就是系统位数)问题
node-gyp 提供 --arch 参数去支持编译成不同位数的addon, ia32表示32位,x64表示64位。
在编译的时候需要注意你引入的第三方库是32位的还是64位的,我之前引入的boost库是32位的,然后我用node-gyp去按照64位去编译结果就报错了。
除此之外,还需要你的node位数和你的addon位数保持一致,否则无法用node执行该文件。
总结一下:就是需要c++的源文件里引入的第三方库 和 node-gyp 和 node 这三个位数保持一致。
最后附上我的项目地址:
https://github.com/kwzm/node-iofile-addon
https://github.com/nodejs/node-gyp
但是我感觉关于binding.gyp文件的语法规则还是说的不明确,大概是因为它本身也不属于node-gyp的范畴吧
gyp文件的语法规则的官方文档应该是这个:https://code.google.com/p/gyp/wiki/GypLanguageSpecification
但是由于墙的原因,所以无法打开,国内我从网上找的比较好的文档是这个:
http://www.cnblogs.com/x_wukong/p/4829598.html
大部分配置都能找到。
在这里我主要说下以下两个问题:
一、引入第三方头文件和库文件
我以引入boost这个库为例,头文件的引入通过设置 include_dirs 而库的引入通过设置 link_settings。
配置文件如下:
{ "variables": { "boost_dir": "D:/boost_1_65_1", "boost_lib": "D:/boost_1_65_1/stage/vc14-x64/lib/" }, "targets": [ { "target_name": "addon", "sources": [ "addon_boost.cpp" ], "include_dirs": [ "<!(node -e \"require('nan')\")", "<(boost_dir)" ], "link_settings": { "libraries": [ "<(boost_lib)/libboost_filesystem-vc140-mt-s-1_65_1.lib", "<(boost_lib)/libboost_system-vc140-mt-s-1_65_1.lib" ] } } ] }
二、关于编译的架构(也就是系统位数)问题
node-gyp 提供 --arch 参数去支持编译成不同位数的addon, ia32表示32位,x64表示64位。
在编译的时候需要注意你引入的第三方库是32位的还是64位的,我之前引入的boost库是32位的,然后我用node-gyp去按照64位去编译结果就报错了。
除此之外,还需要你的node位数和你的addon位数保持一致,否则无法用node执行该文件。
总结一下:就是需要c++的源文件里引入的第三方库 和 node-gyp 和 node 这三个位数保持一致。
最后附上我的项目地址:
https://github.com/kwzm/node-iofile-addon
相关文章推荐
- 记录开发Nodejs c++ addon的一些经验(二、数据类型的转换)
- 记录开发Nodejs c++ addon的一些经验(一、技术栈)
- 记录开发Nodejs c++ addon的一些经验(四、electron)
- 使用node-webkit开发Clover桌面客户端的一些记录(一)
- 关于Spring 配置文件头的一些记录和解释(以备开发时方便查阅)
- iOS开发 关于iBeacon的一些记录
- 【Android开发经验】关于dip、dpi和分辨率的一些事
- iOS开发 关于iBeacon的一些记录
- 关于用DELPHI开发服务器软件中的一些经验
- 网上看到的一些关于asp.net开发的经验
- 一名资深大牛10年时间总结出的一些有关于Java软件开发的经验
- 关于前端开发学习中的一些小记录
- 暑期开发过程中的一些经验记录
- Android上OpenGL开发一些经验记录(上)
- 【Android开发经验】关于dip、dpi和分辨率的一些事
- 关于samsung连接BLE设备的一些资料汇总和开发过程一些经验总结
- electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!
- 关于samsung连接BLE设备的一些资料汇总和开发过程一些经验总结
- 关于coalesce的一些经验记录【陆续增补】