繁体   English   中英

使用node-addon-api的node-gyp Node.js插件不会覆盖Linux上的C ++版本

node-gyp Node.js addon using node-addon-api is not overriding c++ version on linux

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我已经在Mac OS上为node.js成功构建了一个c ++插件。 尝试移植到Linux(Centos7)。

我正在使用node.js版本12.10,node-gyp版本5.0.3,node-addon-api版本1.7.1。 Centos版本7.6.1810,GCC版本7.3.1 20180303(Red Hat 7.3.1-5)(GCC)

我的binding.gyp:

{
  "targets": [
    {
      "target_name": "hsm",
      ### The sources list must be relative to the current directory.
      "sources": [ "../../../my_project/src/mypackage/binding-napi.cpp" ],
      "include_dirs": [
        # this is for using n-api vs nan
        "<!@(node -p \"require('node-addon-api').include\")"
      ],
      'dependencies': ["<!(node -p \"require('node-addon-api').gyp\")"],
      "cflags_cc": [
        "-fexceptions",
      ],
      "conditions": [
        ['OS=="linux"', {
           "cflags_cc": [
             "-std=c++17"
           ]
        }],
      ],
      'xcode_settings': {
        'MACOSX_DEPLOYMENT_TARGET':
          '10.14',
        'CLANG_CXX_LANGUAGE_STANDARD':
          'c++17',
        'GCC_ENABLE_CPP_EXCEPTIONS':
          'YES',
          # 'gnu++1z'
        'OTHER_CFLAGS': [
          "-fcxx-exceptions",
          '-Wno-unused-result'
        ]
      }
    }
  ]
}

我尝试在全局空间和条件下都添加到cflags_cc。 如果两者都做,它将两次添加到g ++命令行中。

这是g ++上的结果标志

... fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 
-fno-omit-frame-pointer 
-fno-rtti 
-fno-exceptions 
-std=gnu++1y 
-fexceptions 
-std=c++17 ...

我已经尝试了-std=c++17-std=c++1z common.gypi文件具有以下相关值:

...
      [ 'OS in "linux freebsd openbsd solaris android aix cloudabi"', {
        'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
        'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++1y' ],
...

我已经看到很多帖子说使用cflags_cc ,但是我只是添加了它,而不是替换它,因此我依赖的c ++ 17功能没有编译。

关于我在做什么错的任何想法?

1 个回复

解决了。 在gcc命令行上添加c ++标准确实可行-它遵循最后一个。 我遇到的问题是被引入了自定义c ++库,以某种方式不包含<iomanip>标头,因此一旦将我包含在binding.cpp文件中,编译就可以了。

5 如何使用 node-addon-api 实现 node-nan 回调

到目前为止,我只实现了同步 node-addon-api 方法,即 JavaScript 函数进行调用,工作完成,插件返回。 当涉及到 v8、libuv 和 node 的内部工作原理时,我在知识上有很大差距,所以请纠正任何明显的误解。 目标是在从 v8 调用 C++ 垃圾收集回调时调用 JavaS ...

6 node-gyp 使用 node 版本

我在 docker 镜像中; 运行 ubuntu 16 我使用更新节点 我现在得到以下控制台输出 我需要重建一个 node-gyp 绑定 当我尝试运行它时产生错误的输出 这是有道理的。 我的问题 node-gyp 从哪里获取它的节点? 如何更新 node-gyp? 如何更新 nod ...

7 使用node-gyp构建node.js插件时出错

我正在构建一个非常简单的node.js插件,该插件仅打印出字符串“ Hello”。 当我使用“ node-gyp构建”来构建它时,出现错误: 首先,我去检查/ opt / local / lib是否存在。 它确实存在,并且文件已满。 我认为这可能是权限问题,因此我运行“ sudo ...

8 Node-Addon-Api 需要解构器吗?

我正在使用 Node-Addon-Api 在 NodeJS 中创建插件。 每 30 秒调用一次插件函数,每次调用该函数时都会创建 4 个双数组,最大数组大小为 2400 个值。 我遇到了内存过载,所以我想知道这可能是因为在这 4 个阵列上。 我是否需要处理使用 New() 函数创建的每个对象? 像N ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM