I've solved it!
A common method of development for me is to reach the stage of a "working" design, I then copy that design to a new directory to continue with the next phase of development.
The next time I try to use "SoC Builder" to build the augmented design, I first delete all the original build folders i.e. "slprj", "soc_prj" & "soc_mydesign_sw_ert_rtw". My mistake was to not delete the model cache files (the .slxc files). Embedded Coder was extracting path names from the .slxc files (which would point at the original design directory). Hence my apparently intermittent behaviour - If the original directory (and contents) still existed then the build would succeed. If the original directory no longer existed then the build would fail, quite rightly stating "gmake: *** No rule to make target......" (as the path it was using, from the .slxc file, no longer existed).
I hope this helps someone else.......
Stu