SCONS是Python的自动智能结构化编译工具,将来或许能代替Make。
在Windows或者Linux下,SConstruct文件相当于MakeFile,使用SCONS编译,需输入scons.bat(scons),后面带上编译选项options(如SConstruct所在的路径)。观察scons.bat这个脚本,可以在其他Python代码中,将SCONS工具当作一个函数来调用。这个函数就是Scons.Script.main(),这个main函数将解析命令行中的编译选项,通过sys.argv[1:]来传入。所以只需修改这个函数,就可以以函数的方式调用,不需要通过如Popen等方式在代码中启动scons。
先找到SCONS安装的目录,如C:\\Python27\Scons-2.3.1包,将Scons\Script\Main.py中main()函数声明中,添加一个传入参数,变为:
def main(args_):
同时将_exec_main(Parser,Values)声明,也变为:
__exec_main(args_,Parser,Values)
然后main(args_)通过调用__exec_main(args_,Parser,Values),将参数传给__exec_main,在__exec_main中再将sys.argv[1:]替换为args.split().
修改完Main.py之后,执行如下,实现替换二进制源文件(Main.pyc):
>>import py_compile
>>py_compile(r'C:\\Python27\\Scons-2.3.1\\Scons\\Script\\Main.py')
使用如下代码测试:
>>import os
>>import sys
>>sys.path=[os.path.join(sys.prefix,'Scons-2.3.1')]+sys.path
>>import Scons.Script
>>Scons.Script.main('.')
Scons工具正常使用。