用 SCons 构建 SWIG 项目

本文介绍如何使用SCons构建工具来编译SWIG项目,包括配置环境变量、定义SConstruct文件并生成Python和Lua扩展模块的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用 SCons 构建 SWIG 项目    

           ( WuErPing  2009/02/10

scons是个好东西,swig也是个好东西,两个好东西加起来如何 ?

 本文所用开发环境:
      swigwin-1.3.38 http://www.swig.org./
      SCons 1.2.0.d20090113 http://www.scons.org/
      python 2.6.1 http://www.python.org/
      lua 5.1.4 http://www.lua.org/
      vc2008+sp1

 操作步骤:
      1、确认自己已经设置好相应的path
      2、Visual Studio 2008 Command Prompt
      3、scons.py
      4、runme.py/runme.lua

SConstruct: 

 1  #  swig 生成 python 扩展 
 2  #  已测试
 3  #  swigwin-1.3.38/Examples/python/simple
 4  #  swigwin-1.3.38/Examples/python/std_map
 5  #  swigwin-1.3.38/Examples/python/std_vector
 6  #  swigwin-1.3.38/Examples/python/callback
 7 
 8  import  os,shutil
 9 
10  env  =  Environment()
11  env.Append(ENV  =  os.environ)
12  env.AppendUnique(CXXFLAGS = Split( " /EHsc /MD " ))    
13  env.Append(CPPPATH  =  [r ' C:/Script/Python26/include ' ])
14  env.Append(LIBPATH  =  [r ' C:/Script/Python26/libs ' ])
15  env.AppendUnique(SWIGFLAGS  =  [ ' -c++ ' ' -python ' ])
16  # env.AppendUnique(SWIGFLAGS = ['-python'])
17  env.AppendUnique(SHLIBSUFFIX  =  [ '' ])
18 
19  =  env.SharedLibrary( ' _example.dll ' , [ ' example.i ' ]) 
20 
21  def  DllToPyd( ** v):
22      dll  =  str(v[ " target " ][0]);
23      pyd  =  dll.replace( " .dll " " .pyd " );
24      shutil.move(dll, pyd)
25      
26  env.AddPostAction(s, env.Action(DllToPyd))
27 
28 

  

 1  #  swig 生成 lua 扩展 
 2  #  已测试
 3  #  swigwin-1.3.38/Examples/lua/class
 4 
 5  import  os,shutil
 6 
 7  env  =  Environment()
 8  env.Append(ENV  =  os.environ)
 9  env.AppendUnique(CXXFLAGS = Split( " /EHsc /MT " ))    
10  env.Append(CPPPATH  =  [r ' C:/Script/Lua/5.1/include ' ])
11  env.Append(LIBPATH  =  [r ' C:/Script/Lua/5.1/lib ' ])
12  env.Append(LIBS  =  [ " lua51.lib " ]);
13  env.AppendUnique(SWIGFLAGS  =  [ ' -c++ ' ' -lua ' ])
14  # env.AppendUnique(SWIGFLAGS = ['-lua'])
15  env.AppendUnique(SHLIBSUFFIX  =  [ '' ])
16 
17  =  env.SharedLibrary( ' example.dll ' , [ ' example.cxx ' , ' example.i ' ]) 
18 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值