如何使用Scons来构建SWIG Lua示例?

我正在尝试编写一个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='' )

提前感谢。

原文链接 https://stackoverflow.com/questions/3810821

点赞
stackoverflow用户8206
stackoverflow用户8206

你尝试/查看过这个示例脚本吗:

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

更多有趣的细节在这篇博客文章中。

2010-09-28 08:11:20
stackoverflow用户215740
stackoverflow用户215740
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。

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

2010-09-28 09:00:35