node.js - 从 WAF 迁移到 GYP - 包括库在内的问题

标签 node.js node-gyp

我正在将一个过时的 npm 包从 WAF 迁移到 GYP,但在让一切正常运行时遇到了一些问题。它运行一个似乎包含第 3 方库的 WSCRIPT:

import Options
from os import unlink, symlink, popen, sys
from os.path import exists 

srcdir = '.'
blddir = 'build'
VERSION = '0.0.2'

def set_options(opt):
  opt.tool_options('compiler_cxx')

def configure(conf):
  conf.check_tool('compiler_cxx')
  conf.check_tool('node_addon')

  print(sys.platform)  
  if sys.platform == 'darwin':
      conf.check_tool('osx')
      tc_framework = 'TelldusCore'
      conf.env.append_value("FRAMEWORK_TC", tc_framework)
      tc_frameworkpath = '/Library/Frameworks/TelldusCore.framework/'
      conf.env.append_value("FRAMEWORKPATH_TC", tc_frameworkpath)
      tc_lib = tc_frameworkpath + 'Headers/'
      conf.env.append_value("CPPPATH_TC", tc_lib)
  elif sys.platform == 'linux2':
      conf.env.LIB_TC = 'telldus-core'
      #conf.env.LIBPATH_TC = ['/usr/lib']
      #conf.env.CCFLAGS_TC = ['-O0']
      conf.env.CCDEFINES_TC = ['TC']
      #conf.env.LINKFLAGS_TC = ['-g']
  else:
      raise ValueError("Dose not support: %r" % sys.platform)

def build(bld):
  obj = bld.new_task_gen('cxx', 'shlib', 'node_addon')
  obj.target = 'telldus'
  obj.source = 'telldus.cc'
  obj.uselib = "TC"

现在我尝试将其转换为 binding.gyp 脚本,但不确定如何包含该库:

{
  "targets": [
    {
    "target_name": "tellduscorejs2",
    "sources": [ "tellduscorejs2.cpp" ],
    "conditions": [
        ['OS=="mac"', {
            'defines': [
                'FRAMEWORK_TC=TelldusCore',
                'FRAMEWORKPATH_TC="/Library/Frameworks/TelldusCore.framework/"',
                'CPPPATH_TC="/Library/Frameworks/TelldusCore.framework/Headers/"'
            ]
        }],
        ['OS=="linux"', {
            'defines': [
                'LIB_TC=telldus-core',
                'CCDEFINES_TC=TC'
            ]
        }]
    ],
    'link_settings': {
        'libraries': [
            ???
        ],
    },
   }
  ]
}

如果有人能指出我的思路是否正确,或者我需要更改哪些内容以包含该库,我们将不胜感激!

最佳答案

我实际上已经为 telldus-core 项目完成了这项工作。参见 https://github.com/marchaos/telldus-core-js/

我还为设备和传感器添加了事件。

关于node.js - 从 WAF 迁移到 GYP - 包括库在内的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472085/

相关文章:

node.js - Heroku Node JS 应用程序错误 - 表示找不到我的主模块

javascript - 运行 Electron 应用程序后如何执行停止脚本?

node.js - npm install --save Loopback-connector-mongodb 失败

node.js - 我无法安装 node-libcurl 模块

node.js - 使用 formData 进行 Express Node-fetch 时出现无效的 json 响应正文错误

mysql - 类型错误 : Cannot read property 'filename' of undefined--multer

node.js - 使用 nodejs/sequelize 加密 postgres 数据

base64 - `node-gyp rebuild` 上的错误 `base64@2.1.0 install`

node.js - WebFaction Node.Js 上的 BCrypt 未安装

javascript - 如何解决 Windows 10 上的 'node-gyp rebuild' 问题?