我正在尝试编写一个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='' )
提前致谢。
答案 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。