我有来自所有源的生成文件,源生成器使用glob。由于我使用变体目录来构建,所有(并且只有)此构建中的源应放在变体目录中,因此我将glob指向该目录以进行刮擦。当我从构建中删除文件时,这会失败,因为我删除的.c文件仍然在以前版本的变体目录中。 Clean不会删除复制到变体中的源代码,因此即使是干净的构建也不起作用,我必须删除所有目录(或至少* .c)才能再次获得良好的构建。有没有办法我可以:让scons删除额外的资源,获取不再需要的资源列表,这样我可以删除它们的前代,或者......
我无法轻易更改生成器以获取文件列表,这是明显的“最佳”解决方案。
SConstruct
VariantDir('build','src')
Command('generated.h', ['src1.c','src2.c'], 'python scrape_sources $TARGET.dir')
scrape_sources
import glob
import sys
f = open('generated')
f.write(','.join(glob.glob(sys.args[1]+'*.c'))
f.close()
当我从列表中删除src2.c时,源文件仍然在上一次运行的build
中,因此被扫描。我想要一种方法来很好地删除不再在构建中的源。