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])
しかし、これは非常に醜く、フィルターで除外するファイルが複数ある場合はさらに醜くなります。
これを行うためのより明確な方法はありますか?