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

Building a NodeJS addon with mixed C/C++ source files

本文关键字:一个 插件 NodeJS 构建 源文件 混合 C++      更新时间:2023-10-16

我正在尝试从混合的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",但它似乎不可用。

这是脚本:

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']
我在

邮件列表中得到了解决方案。

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