I have used cmake, premake5 and syncProj. From them worst syntax (difficult to configure, use and diagnose errors) is cmake , after that goes premake5 - it allow full Lua programming language dialect, including functions, and syncProj is better from error handling perspective and usability and debugging in overall, but it's lacking of portability at the moment (Did not need one currently).
But I'm looking forwards to any attempts to help me to improve syncProj into right direction - I think code is in much better shape than others.
I'm waiting when C++ modules comes up, and I will be able to compile C++ code on fly ("C++ script"), after that syncProj can be recoded in C++ and forget about odd programming languages like C# and Lua. :-) (and yes cmake is not a programming language, it's sibling of batch files or shell scripts)