【问题标题】:Node-webkit multi platform native module with nw-gyp带有 nw-gyp 的 Node-webkit 多平台原生模块
【发布时间】:2015-01-27 08:33:16
【问题描述】:

我目前正在编写一个使用本机模块 (lwip) 的 node-webkit 应用程序。我发现我需要用nw-gyp 编译本机模块。 使用nw-gyp 后,lwip_image.node 将在node_modules/lwip/build/Release 下创建一个新文件。

  1. 如何需要原生模块?像这样:var lwip_image = require('./node_modules/lwip/build/Release/lwip_image.node')??

  2. 如果原生模块是在 Win8 x64 上创建的,它是否也可以在 Win7 x64 甚至 Win8/7 x32 上运行? Mac vs Ubuntu x32 vs Ubuntu x64 同样的问题?

  3. 为了方便构建过程,我将在目标平台上构建原生模块一次。之后,我想将它们全部复制到我的项目目录中,以便我可以自动化构建过程以一次为所有平台构建它。我该怎么做呢?使用os.platform() 并需要取决于平台? ...

更新:这些帖子正是我要找的:https://github.com/joyent/node/issues/4398#issuecomment-11233144 https://github.com/npm/npm/issues/1891

【问题讨论】:

    标签: node.js node-webkit node-modules node-gyp


    【解决方案1】:
    1. 您的模块的短名称将在“require”中使用
    2. 您的 32 位代码(使用 target=ia32 编译)可以在 64 位平台上运行,但反之则不行
    3. 为所有平台编译完模块后,为不同平台打包不同的 zip、.app 或 .exe 版本以及模块的不同二进制文件就足够了。

    【讨论】:

    • To 3.:我想绕过在三个不同平台上构建应用程序。我想要一个解决方案,我只在所有目标平台上编译一次本机模块,然后将它们复制到我的项目目录中的某个位置。我正在寻找一个模块,该模块需要取决于平台的正确“.node”文件。这样我就可以使用node-webkit-builder在我的mac上为所有平台自动构建应用程序。
    • “根据平台需要正确的 '.node' 文件” - 所有平台的 require 命令都是相同的。诀窍是包含正确的编译二进制文件。例如,我使用的是 sqlite3,并使用相同的命令require('sqlite3'),但 lib 文件夹中的二进制文件在不同平台上是不同的。
    猜你喜欢
    • 2015-11-20
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多