我有时想从 SCons 的 Glob 结果中排除某些源文件。通常是因为我想用不同的选项编译那个源文件。像这样的东西:
objs = env.Object(Glob('*.cc'))
objs += env.Object('SpeciallyTreatedFile.cc', CXXFLAGS='-O0')
当然,这给 SCons 带来了问题:
scons: *** Two environments with different actions were specified
for the same target: SpeciallyTreatedFile.o
我通常使用以下成语解决此问题:
objs = env.Object([f for f in Glob('*.cc')
if 'SpeciallyTreatedFile.cc' not in f.path])
但这很丑陋,如果要过滤掉多个文件,那就更丑陋了。
有没有更清晰的方法来做到这一点?