我如何使用Scons构建SWIG lua示例?

时间:2010-09-28 08:07:56

标签: lua swig scons

我正在尝试编写一个SCons脚本来构建使用swig分发的lua / embed3示例。按makefile构建指令,如下所示:

swig -c++ -lua -external-runtime swigluarun.h
swig -c++ -lua -module example -o example_wrap.cpp example.i
g++ -o embed3 embed3.cpp example_wrap.cpp example.cpp \
    -llua5.1 -I/usr/include/lua5.1

在Scons wiki中,据说Scons已经建立了swig支持。在源中添加“.i”文件应该可以完成这项工作,但是我无法找到有关如何实现此脚本的任何详细说明。

以下脚本在swig示例下构建lua / simple项目。但是,我无法找到如何执行我的问题中给出的第一个swig指令。谢谢你的回复。

env = Environment()

env.Append( SWIGFLAGS = '-lua' )
env.Append( CPPPATH = '/usr/include/lua5.1' )
env.Append( LIBS = 'lua5.1' )

env.SharedLibrary( target = 'example.so', 
                   source = ['example.c', 'example.i' ], SHLIBPREFIX='' )

提前致谢。

2 个答案:

答案 0 :(得分:1)

您是否尝试过/看到此example script

import distutils.sysconfig
env = Environment(SWIGFLAGS=['-python'],
                  CPPPATH=[distutils.sysconfig.get_python_inc()],
                  SHLIBPREFIX="")
env.SharedLibrary('_example.so', ['example.c', 'example.i'])

更多有趣的细节在this blog post

答案 1 :(得分:0)

感谢Eli的指导,这是我能找到实现脚本的唯一方法。欢迎任何改进。

env = Environment()

swigCmdLine = 'swig -c++ -lua -external-runtime swigluarun.h'
swigDefs = env.Command( 'swigluarun.h', '', swigCmdLine )
env.Depends( 'embed3', swigDefs )
env.Append( SWIGFLAGS = '-c++ -lua' )
env.Append( CPPPATH = '/usr/include/lua5.1' )
env.Append( LIBS = 'lua5.1' )
env.Program( 'embed3', ['embed3.cpp', 'example.cpp', 'example.i' ] )

注意:我正在使用Ubuntu 9.10,swig-1.3.36和scons 1.3.0。