The SCons Glob() function is not recursive, so you'll have to add each sub-directory in the source list, as follows:
env.Program(target='exec_test', source=[Glob('build/*.cpp'),
Glob('build/subdir1/*.cpp',
Glob('build/subdir2/*.cpp'])
This should work, or you could consider creating a hierarchical build whereby you create a SConscript script in each sub-directory.