【scons】自动化编译脚本 - meiyisicc/WebDataCrawl GitHub Wiki
scon自动化编译
可以直接使用其提供的部分函数进行编译。如Program,Object Library等。
问题总结
子模块编译
子模块可以返回对应的Object对象,在最外层的模块中累加这些对象进行编译。顶层模块使用SConscript函数包含子模块的函数,过程中还可以使用exports参数把当前模块的变量传递到子模块。
如使用Return,把子模块中的变量return到上一层模块。
写自己的build类
有一些场景下想调用的自己的命令,如想使用ld -o target.o -r a.o b.o c.o把多个目标文件合并成一个大的目标文件。像这种需要提供自己的builder,可以直接生成一个,指定action,然后把这个action附加到env环境上就可以了。
常用的常量
$TARGET 表示构造函数中的目标入参。一般为字符串或者单个变量,是构造函数的第一个参数。
$SOURCE 表示构造函数中的目标入参。一般为字符串或者单个变量,是构造函数的第二个参数。可以与build的声明对照着看。
$TARGETS 表示构造函数中的目标入参。一般是一个列表对象。
$SOURCES 表示构造函数中的目标入参。一般是一个列表对象。
如上边的ld -o target.o -r a.o b.o c.o可以直接写成这样:
Builder(action='ld -o $TARGET -r $SOURCES')
然后再把上边的构建函数挂载到环境变量上,再调用就可以了。