使用混合的C / C ++源文件构建NodeJS插件

时间:2012-06-25 10:21:05

标签: c++ c node.js add-on

我正在尝试从混合C / C ++源构建NodeJS插件。我想避免将C代码构建为单独的共享库,尽管这是一个部分解决方案。

我收到错误:

Cannot guess how to process src:///home/chris/Dropbox/cbackend/data.c 
(got mappings ['.C', '.cc', '.cpp', '.c++', '.cxx'] 
in <class 'cxx.cxx_taskgen'>) -> try conf.check_tool(..)?

当我尝试构建它时。如果我将.c文件重命名为.cc并适当更改wscript,则一切正常。

我尝试在wscript中添加'compiler_c',但它似乎不可用。

这是wscript:

import os
import Options

srcdir = '.'
blddir = 'build'
VERSION = '0.3.0'

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

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

  conf.env.append_value('CCFLAGS', ['-O3'])
  conf.env.append_value('CXXFLAGS', ['-O3'])
  if Options.platform == 'darwin': conf.env.append_value('LINKFLAGS', ['-undefined', 'dynamic_lookup'])

def build(bld):
  obj = bld.new_task_gen('cxx', 'shlib', 'node_addon')
  obj.target = 'cbackend'
  obj.source = 'cbackend.cc data.c'
  obj.uselib = ['NODE']

1 个答案:

答案 0 :(得分:1)

我在邮件列表上获得了解决方案。

普通的C编译器在NodeJS中称为'compiler_cc',而不是在WAF文档中称为'compiler_c'。