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

然后再把上边的构建函数挂载到环境变量上,再调用就可以了。