关于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。

配置文件如下:

{
"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的一些经验(三、关于node-gyp)的更多相关文章

  1. 记录开发Nodejs c++ addon的一些经验(一、技术栈)

    Nodejs c++ addon 是用c++去编写Nodejs的插件 技术栈: 1.node-gyp 一个用于把c++文件编译成node可执行文件的库 2.v8 google v8引擎 用于处理c++ ...

  2. 记录开发Nodejs c++ addon的一些经验(四、electron)

    如果我们要在electron里使用我们开发的addon,那么直接使用是不行的. 官方的解释是:Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译 ...

  3. 记录开发Nodejs c++ addon的一些经验(二、数据类型的转换(尤其是Buffer))

    常见的数据类型的转换基本比较容易,结合nan应该不是一件难事 参考链接: http://blog.jobbole.com/109598/ http://deadhorse.me/nodejs/2012 ...

  4. iOS开发中你是否遇到这些经验问题

    前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...

  5. 李洪强iOS开发本人集成环信的经验总结_09_处理好友请求

    李洪强iOS开发本人集成环信的经验总结_09_处理好友请求 实现这种效果: 01 - 遵守处理好友请求的代理协议 02  - 设置代理 03 - 实现代理方法 04 - 实现代理中用到的方法 

  6. 李洪强iOS开发本人集成环信的经验总结_08_自动登录补充

    李洪强iOS开发本人集成环信的经验总结_08_自动登录补充 来到Appdelegate里面 01 - 遵守自动登录的代理协议 02 - 设置自动登录的代理 03 - 判断与实现  04 - 代理方法的 ...

  7. 李洪强iOS开发本人集成环信的经验总结_07_监听好友请求

    李洪强iOS开发本人集成环信的经验总结_07_监听好友请求 来到Appdalegate中: 遵守代理协议 设置代理  实现监听好友请求的回调的方法

  8. 李洪强iOS开发本人集成环信的经验总结_06_发送好友请求

    李洪强iOS开发本人集成环信的经验总结_06_发送好友请求 同步好友请求 异步好友请求

  9. 李洪强iOS开发本人集成环信的经验总结_03_注册

    李洪强iOS开发本人集成环信的经验总结_03_注册 环信一共提供了三种注册的方法:  01 同步注册:  02 异步注册:  03 - 使用代理回调进行注册,但是3.0没有了,3.0之前有  调用注册 ...

随机推荐

  1. P3866 [TJOI2009]战争游戏 最小割

    $ \color{#0066ff}{ 题目描述 }$ 小R正在玩一个战争游戏.游戏地图是一个M行N列的矩阵,每个格子可能是障碍物,也可能是空地,在游戏开始时有若干支敌军分散在不同的空地格子中.每支敌军 ...

  2. 基于VS快速排序的单元测试

    1.选择开发工具 1.1由于Visual stdio 已经安装,所以运行界面如下图所示: 2.进行单元测试 2.1用Visual stdio 2017创建一个新项目(快速排序)如下图所示: 其中程序如 ...

  3. Thread类和Runnable接口的比较

    Thread和Runnable的联系 Thread类的定义: public class Thread extends Object implements Runnable 联系:从Thread类的定义 ...

  4. Java的输出方式

    System.out.println("...." + elements + "..."); 格式化输出: 我们知道输出格式化数字可以使用 printf() 和 ...

  5. RHCE 入门 第一篇

    随着工作压力越来越大,我们越需要技术储备. 从2017年10月14日开始参加RHCE培训

  6. 028-applicationContext.xml配置文件

    版本一 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http: ...

  7. android TCP 和 UDP总结(转)

    之前写过一些关于TCP和UDP数据传输的代码,比如使用TCP传输音视频数据包,P2P打洞中使用UDP等.写好之后就直接丢下了,没有总结下都.最近准备找工作,再拿来温习下. 1.还是先说点啥 暂时把自己 ...

  8. plsql数据库异常---plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致

    今天遇到这个问题网上搜了一下答案找到了 转贴 http://blog.csdn.net/lidew521/article/details/8546155 plsql 登录后提示: Database c ...

  9. OSI与TCP/IP协议区别

    1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...

  10. 游戏反编译工具dnSpy

    dnSpy使用的工具下载地址为: https://github.com/cnxy/dnSpy/archive/v4.0.0.zip 或 dnSpy官方下载地址: https://github.com/ ...