2012-06-25 51 views
1

我想從混合C/C++源代碼構建NodeJS插件。我想避免將C代碼構建爲獨立的共享庫,儘管這是一個部分解決方案。用混合C/C++源文件構建NodeJS插件

我得到的錯誤:

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

我得到了一個郵件列表上的解決方案。

普通的C編譯器在NodeJS中被稱爲'compiler_cc',而不像'WAF文檔'中的'compiler_c'。