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

发布于 2024-09-25 08:29:50 字数 758 浏览 5 评论 0原文

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

提前致谢。

I am trying to write an SCons script to build lua/embed3 example distributed with swig. Build instructions by makefile as follows:

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

In Scons wiki, it's said that Scons has builtin swig support. Adding '.i' file among sources should do the job, however i am unable to find any detailed description about how can this script can be implemented.

Following script builds lua/simple project under swig examples. However, i am unable to find how to execute first swig directive given in my question. Thanks for reply.

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='' )

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

合约呢 2024-10-02 08:29:50

您是否尝试过/看到这个示例脚本

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

一些更有趣的细节位于此博文

Did you try/see this example script:

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

Some more interesting details are in this blog post.

一紙繁鸢 2024-10-02 08:29:50

感谢 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。

Thanks to Eli's guidance, this is only way i could find to implement script. Any improvements are welcome.

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' ] )

Note: I am working on Ubuntu 9.10, swig-1.3.36, and scons 1.3.0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文