The structure looks good to me, but there are a few points:
- it’s normal to separate C++ header and source files into different directories, or maybe there is structure in the modules directory you are not showing?
- you probably want directories to put intermediate files like *.obj in
- you will need different directories for debug and release output files
- a directory for installers like InnoSetup and their install files can be useful – you have to make the philosphical decision about whether to version control these
As for tools to create the structure, a few minutes spent writing a bash script is all you need – it’s worth having the same tools (like bash) available on all platforms.