2010-09-28 68 views
0

我想寫一個SCons腳本來構建與swig分發的lua/embed3示例。通過建立makefile文件說明如下:我如何使用Scons來構建SWIG lua示例?

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維基,它說,使用SCons已經內置痛飲支持。在源代碼之間添加'.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='') 

在此先感謝。

回答

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

+0

用你的例子更新問題 – abekkine 2010-09-28 08:26:59

+0

@abekkine:我認爲你可以爲這個 – 2010-09-28 08:53:01

+0

定義一個自定義的'Scons.Builder',我是Scons的初學者,並且在使用gnu make之後,難以構建-extra-依賴與scons。謝謝你的幫助。我可以確認對以下腳本的任何改進作爲接受的答案。 – abekkine 2010-09-28 09:05:25

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。