То, что вы делаете в файле scons, является типичной ошибкой новичка в scons.Вы предполагаете, что пишете сценарий для построения вашего проекта.
Scons не работает так.Файлы scons - это скрипт, который добавляет target в проект.Это делается с помощью Python, и различные объекты позволяют вам создавать и манипулировать целями, пока сценарий не будет выполнен. Сначала начнется сборка проекта.
Что вы делаете в своем коде, так это описывает Среду для использования, Программу для созданияи после этого вы вызываете подпроцесс, который запускает какую-то программу.После этого начнется сборка проекта - неудивительно, что старый исполняемый файл запущен, новый еще не начал собираться.
Что вам нужно сделать, так это использовать собственный компоновщик для выполнения программы.
env = Environment() #construct your environment
files = "test.cpp" #env.Glob or list some files
#now we create some targets
program = env.Program("test",files) #create the target *program*
execution = env.Command(None,None,"./test") #create the execution target (No input & output
Depends(execution,program) #tell scons that execution depends on program
#there might be a way to get SCons to figure out this dependency itself
#now the script is completed, so the targets are built
Здесь зависимости ясны, программа должна быть собрана до выполнения, и она будет