我感觉谷歌的官方文档本身就不完善,导致我没办法详解,很多配置都是看 别人写的 慢慢摸索出来的。windows篇章里,我实现了一个海康node插件,linux版里,我同样实现了这个功能.

{"variables": {"module_path%": ""},"targets": [{"target_name": "hik_camera","cflags!": ["-fno-exceptions"],"cflags_cc!": ["-fno-exceptions"],"sources": ["src/index.cpp","src/KSHikCameraWrapper.cpp","src/common.cpp",],"include_dirs": ["<!@(node -p \"require('node-addon-api').include\")"],"defines": ["NAPI_DISABLE_CPP_EXCEPTIONS", "NAPI_VERSION=6"],"conditions": [['OS == "win"',{"msvs_configuration_attributes": {"CharacterSet": "0"},"msvs_settings": {"VCCLCompilerTool": {"DebugInformationFormat": 3}},"include_dirs": ["sdk/win/include"],"libraries": ["../sdk/win/lib/HCNetSDK.lib"],"conditions": [['module_path == ""',{"copies": [{"destination": "<(module_root_dir)/prebuilds/win32-x64","files": ["<(module_root_dir)/sdk/win/bin/AudioRender.dll","<(module_root_dir)/sdk/win/bin/GdiPlus.dll","<(module_root_dir)/sdk/win/bin/HCCore.dll","<(module_root_dir)/sdk/win/bin/HCNetSDK.dll","<(module_root_dir)/sdk/win/bin/hlog.dll","<(module_root_dir)/sdk/win/bin/HmMerge.dll","<(module_root_dir)/sdk/win/bin/hpr.dll","<(module_root_dir)/sdk/win/bin/HXVA.dll","<(module_root_dir)/sdk/win/bin/libeay32.dll","<(module_root_dir)/sdk/win/bin/libmmd.dll","<(module_root_dir)/sdk/win/bin/MP_Render.dll","<(module_root_dir)/sdk/win/bin/NPQos.dll","<(module_root_dir)/sdk/win/bin/PlayCtrl.dll","<(module_root_dir)/sdk/win/bin/ssleay32.dll","<(module_root_dir)/sdk/win/bin/SuperRender.dll","<(module_root_dir)/sdk/win/bin/YUVProcess.dll","<(module_root_dir)/sdk/win/bin/zlib1.dll","<(module_root_dir)/sdk/win/bin/HCNetSDKCom/",],}]},'module_path != ""',{"copies": [{"destination": "<(module_root_dir)/<(module_path)","files": ["<(module_root_dir)/sdk/win/bin/AudioRender.dll","<(module_root_dir)/sdk/win/bin/GdiPlus.dll","<(module_root_dir)/sdk/win/bin/HCCore.dll","<(module_root_dir)/sdk/win/bin/HCNetSDK.dll","<(module_root_dir)/sdk/win/bin/hlog.dll","<(module_root_dir)/sdk/win/bin/HmMerge.dll","<(module_root_dir)/sdk/win/bin/hpr.dll","<(module_root_dir)/sdk/win/bin/HXVA.dll","<(module_root_dir)/sdk/win/bin/libeay32.dll","<(module_root_dir)/sdk/win/bin/libmmd.dll","<(module_root_dir)/sdk/win/bin/MP_Render.dll","<(module_root_dir)/sdk/win/bin/NPQos.dll","<(module_root_dir)/sdk/win/bin/PlayCtrl.dll","<(module_root_dir)/sdk/win/bin/ssleay32.dll","<(module_root_dir)/sdk/win/bin/SuperRender.dll","<(module_root_dir)/sdk/win/bin/YUVProcess.dll","<(module_root_dir)/sdk/win/bin/zlib1.dll","<(module_root_dir)/sdk/win/bin/HCNetSDKCom/",],}]},]],},'OS == "linux"',{"include_dirs": ["sdk/linux/include"],"libraries": ["-L<(module_root_dir)/sdk/linux/bin","-lhcnetsdk",],"link_settings": {"libraries": ["-Wl,-rpath,'$$ORIGIN'"],},# "cflags": ["-finput-charset='gbk'"],"cflags": ["-finput-charset='gbk'", "-fexec-charset='gbk'"],# "cflags_cc": ["-fwide-exec-charset='gbk'"],"conditions": [['module_path == ""',{"copies": [{"destination": "<(module_root_dir)/prebuilds/linux-x64","files": ["<(module_root_dir)/sdk/linux/bin/HCNetSDK_Log_Switch.xml","<(module_root_dir)/sdk/linux/bin/libAudioRender.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so.1.0.0","<(module_root_dir)/sdk/linux/bin/libHCCore.so","<(module_root_dir)/sdk/linux/bin/libhcnetsdk.so","<(module_root_dir)/sdk/linux/bin/libhpr.so","<(module_root_dir)/sdk/linux/bin/libNPQos.so","<(module_root_dir)/sdk/linux/bin/libopenal.so.1","<(module_root_dir)/sdk/linux/bin/libPlayCtrl.so","<(module_root_dir)/sdk/linux/bin/libssl.so","<(module_root_dir)/sdk/linux/bin/libSuperRender.so","<(module_root_dir)/sdk/linux/bin/libz.so","<(module_root_dir)/sdk/linux/bin/HCNetSDKCom/",],}]},'module_path != ""',{"copies": [{"destination": "<(PRODUCT_DIR)","files": ["<(module_root_dir)/sdk/linux/bin/HCNetSDK_Log_Switch.xml","<(module_root_dir)/sdk/linux/bin/libAudioRender.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so.1.0.0","<(module_root_dir)/sdk/linux/bin/libHCCore.so","<(module_root_dir)/sdk/linux/bin/libhcnetsdk.so","<(module_root_dir)/sdk/linux/bin/libhpr.so","<(module_root_dir)/sdk/linux/bin/libNPQos.so","<(module_root_dir)/sdk/linux/bin/libopenal.so.1","<(module_root_dir)/sdk/linux/bin/libPlayCtrl.so","<(module_root_dir)/sdk/linux/bin/libssl.so","<(module_root_dir)/sdk/linux/bin/libSuperRender.so","<(module_root_dir)/sdk/linux/bin/libz.so","<(module_root_dir)/sdk/linux/bin/HCNetSDKCom/",],}]},]],},]],}],
}

部分指令的解释:

一,条件

可以根据 conditions 实现条件编译,比如在 windows 平台下,或者 Linux 平台下引用不同的库。

二,编译器链接器指令

windows 下,我使用的微软的cl(c/c++) 编译器,所以可以传入编译和链接指令。上图所示就是如何配置字符集。

那么gyp支持哪些配置呢?在查看了gyp的源码之后,我发现,只支持这么几种:

那么这些指令对应的文档在哪里呢?大家可以看这里:配置选项

细节方面,大家自己看MSDN吧,然后自己尝试配置看看。

再就是linux一些配置:

关于linux的一些配置,如果涉及到引用第三方库,则需要处理好库文件路径。对于这个问题,大家可以移步看看我的这篇文章。

以上,就是gyp配置文件的一些粗解,其实其最终目的,就是配置一些参数,传给编译器链接器使用的。

node binding.gyp 配置文件粗解相关推荐

  1. Nginx配置文件粗解

    为什么80%的码农都做不了架构师?>>>    上一篇搭建了nginx+php基本环境,这一篇专门来学习nginx配置文件,以及怎样让nginx支持php,nginx的配置文件结构类 ...

  2. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

  3. elasticsearch配置文件详解

    配置文件详解 配置文件位于es根目录的config目录下面,有elasticsearch.yml和logging.yml两个配置,主配置文件是elasticsearch.yml,日志配置文件是logg ...

  4. Spring Boot 2.x基础教程:配置文件详解

    在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring Boot给我们带来的诸多优点,我们用非常少的代码量就成功的实现了一个Web应用,这是传统的Spring应 ...

  5. ELKElasticSearch5.1基础概念及配置文件详解【转】

    1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...

  6. Ruoyi框架学习--Vue前端配置文件详解

    CSDN话题挑战赛第2期 参赛话题:学习笔记 1.package.json配置中的重点介绍: 1.许可证:license:各种License介绍(BSD,MIT,MPL,Apache License, ...

  7. docker-compose.yml 配置文件详解

    docker-compose.yml 配置文件详解 Compose 是一个用于定义和运行多容器 Docker 的工具.借助 Compose,您可以使用 YAML 文件来配置应用程序的服务. 使用 Co ...

  8. 用户(User)和用户组(Group)配置文件详解

    用户(User)和用户组(Group)配置文件详解 作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(Us ...

  9. Elasticsearch基础2——es配置文件、jvm配置文件、log4j2.properties配置文件详解

    文章目录 一.配置文件详解 1.1 elasticsearch.yml文件 1.1. 1 基础参数 1.1.1.1 自定义数据/日志目录 1.1.1.2 锁定物理内存 1.1.1.3 跨域设置 1.1 ...

最新文章

  1. 专题 6 目录文件编程
  2. Win11怎么设置桌面软件小图标 Win11设置桌面软件小图标教程
  3. 用纯css来实现一个优惠券
  4. linux xmind无法运行,linux安装xmind的方法步骤
  5. 学习web标准、用户体验改善、Ajaxamp;Asp.Net
  6. Codeforces 57C Array dp暴力找到规律
  7. 安卓能硬改的手机机型_这款iPhone手机专属特效AR相机,我真的爱了
  8. 矩阵奇异值分解(详解)
  9. 基于ARM9处理器的工作模式&工作状态&寄存器&异常类型总结笔记
  10. windows系统常用命令
  11. app内录屏开发 ios_iOS端屏幕录制Replaykit项目实践
  12. java水仙花数(详解)
  13. 今年春节,租个“人设”回家?
  14. AnimationEvent事件问题之详细分解
  15. 系统架构升级建议书(2)
  16. 关于C++程序运行程序是出现的this application has requested the runtime to terminate it in an unusual way. 异常分析
  17. 【8】疯壳开源蓝牙智能健康手表(心率血压血氧心电监测可定制)_蓝牙
  18. 『百日百题 · SQL篇』备战面试,坚持刷题(四)—— 高级查询
  19. 优友机器人价格_优友U05类人型机器人 换汤不换药
  20. python爬取图片并以二进制方式保存到本地

热门文章

  1. 关于CCNA的培训课程(1)-- 网络基础部分
  2. 最优化理论—单纯形法的C++实现(大M法)
  3. 什么是项目,有哪些特点,以及项目启动背景
  4. cordova 完全就是一个壳而已 完全就是个浏览器而已
  5. 国产充电宝品牌排行,国内最好的充电宝品牌推荐
  6. Linux中的信号是什么?
  7. 选择性波峰焊设备的组成及技术要点
  8. JS将html转换成txt
  9. 第八章 内存共享 windows程序设计王艳平版
  10. 广西高等教育学会高校教育技术委员会莅临瑞云科技考察交流