• node-gyp---Node.js的原生插件构建工具


    写成日期:2021/10/08 10:00 AM

    原文地址:https://github.com/nodejs/node-gyp

    node-gyp Node.js的原生插件构建工具

    我是一个跨平台的命令行工具,在Node.js中使用,用于为Node.js编译原生插件模块。我包含了一个gyp-next的分叉(gyp-next之前由Chromium在使用),扩展用于支持Node.js原生插件的开发。

    吭吭,我不是用于构建Node.js自身的工具。

    我支持Node.js的很多很多版本,从0.8到4、5、6...,嗯嗯截止目前我都支持,放心使用。

    我提供的功能

    • 在已经支持的任意平台上,使用同一种构建命令。

    • 兼容Node.js的不同版本

    我如何安装

    可以直接用 npm 进行安装:npm install -g node-gyp

    根据我将运行的操作系统,还需要安装以下东西:

    在Unix上

    • Python v3.6+

    • make

    • C/C++编译工具链,如GCC

    在macOS上

    如果系统升到了macOS Catalina(10.15+),需要单独看 macOS_Catalina.md

    • Python v3.6+

    • Xcode

      • 需要安装XCode命令行工具,xcode-select --install

      • 如果已经安装了完整的Xcode,要通过菜单 Xcode -> Open Developer Tool -> More Developer Tools,进行clang、clang++、make的安装

    在Windows上

    TODO

    配置Python依赖

    TODO

    如何食用

    第一步,进到需要编译的原生插件目录下,cd my_node_addon

    第二步,生成一个适合当前系统平台的项目编译文件,node-gyp configure。在VC++2015上自动检测失败,需要手动添加指定,node-gyp configure --msvs_version=2015。配置步骤会在当前目录找到building.gyp文件,如何配置它见下面。

    现在,build目录下会包含一个Makefile(在Unix上)或一个vcxproj(在Windows上)。

    第三步,构建,node-gyp build

    接下来会生成 .node 的绑定文件,编译后的绑定文件在 build/Debug 或 build/Release/ 中,这取决于构建的模式。Debug使用 --debug参数,重新进行 configure、build/rebuild。

    现在,你可以通过 require 这个 .node 文件来运行你的测试了!

    building.gyp 文件

    它描述了待编译模块的配置,类JSON格式,它与package.json一块儿放在包的根目录下。

    适用于构建Node.js插件的gyp示例:

    {
      "targets": [
        {
          "target_name": "binding",
          "sources": [ "src/binding.cc" ]
        }
      ]
    }
    

    扩展阅读

    docs目录下包含一些额外的文档,描述了一些关于node-gyp的特定主题,可能对你进行安装或构建产生帮助。

    一些非官方的写的不错的教程:

    我有哪些命令

    • help,显示帮助文档

    • build,使用make/msbuild.exe构建原生插件

    • clean,移除build文件夹

    • configure,生成适配当前平台的项目构建文件

    • rebuild,执行clean、configure、build

    • install,安装给定版本的Node.js头文件

    • list,列出当前安装的Node.js头文件的版本

    • remove,移除给定版本的Node.js头文件

    命令可选参数

    • -j n, --jobs n,并行运行make,取决于最大系统核心数

    • --target=v6.2.1,指定Node.js版本,默认使用process.version

    • --silly, --longlevel=silly,打印所有进度到控制台

    • --verbose, --loglevel=verbose,打印大多数进度到控制台

    • --silent, --loglevel=silent,不打印任何东西

    • debug, --dbueg,使用Debug构建,默认是Release

    • -C $dir, --directory=$dir,在不同的文件夹中跑命令

    • --make=$make,重写make命令,比如gmake

    • --thin=yes,使用精简静态库

    • --arch=$arch,设置目标架构,如 ia32

    • --tarball=$path,从本地tarball获取头文件

    • --devdir=$path,SDK下载目录,默认使用OS缓存目录

    • --ensure,如果头文件已经存在则不重新安装

    • --dist-url=$url,从自定义URL中下载头文件

    • --proxy=$url,设置HTTP(S)代理,用于下载header tarball

    • --noproxy=$urls,设置下载header tarball时需要忽略代理的URLs

    • --cafile=$cafile,重写默认的CA chain,用于下载header tarball

    • --nodedir=$path,设置node源码的路径

    • --python=$path,设置Python二进制的路径

    • --msvs_version=$version,设置Visual Studio版本(Windows专用)

    • --solution=$solution,设置Visual Studio Solution版本(Windows专用)

    配置

    环境变量

    举例,将 devdir 设置为 /tmp/.gyp,

    export npm_config_devdir=/tmp/.gypset npm_config_devdir=c: emp.gyp

    npm配置

    举例,将 devdir 设置为 /tmp/.gyp,

    npm config set [--global] devdir /tmp/.gyp

    许可证

    MIT

  • 相关阅读:
    cocos creator 场景如何透明,多个canvas层级显示
    c/c++导出lua绑定
    c++自动导出lua绑定
    获取Sprite上某一个点的透明度
    cocos2d-x lua中实现异步加载纹理
    keystore找回密码
    xcode 制作静态库文件(.a)
    Ajax学习笔记之一----------第一个Ajax Demo[转载]
    lua调用java java调用lua[转载]
    WPF中模板选择和DataContext的一些使用
  • 原文地址:https://www.cnblogs.com/hencins/p/15379546.html
Copyright © 2020-2023  润新知