1

混合 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 を適切に変更すると、すべて正常に動作します。

「compiler_c」を wscript に追加しようとしましたが、利用できないようです。

ここに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']
4

1 に答える 1

1

私はメーリングリストで解決策を与えられました。

プレーンCコンパイラは、WAFドキュメントのように「compiler_c」ではなく、NodeJSでは「compiler_cc」と呼ばれます。

于 2012-06-26T08:55:58.493 に答える