cmake is certainly worth looking at. Doesn&#x27;t take much to get up and running with it, it&#x27;s pretty straightforward to use once you&#x27;re set up, it takes out-of-source builds seriously, and it&#x27;s got fair support for adding custom build tools (something you&#x27;ll have a devil of a time getting working nicely in Visual Studio). Reasonable ecosystem as well, with a good supply of online examples and drop-in helper scripts for locating common libraries. (Compare and contrast to, e.g., MSBuild, boost jam, or JamPlus - all of which, even MSBuild, might as well by comparison have about 0 users each.)<p>Not to say that it isn&#x27;t awful in many respects, though. It often feels as if it has been designed by 3 people, none of whom talk to one another, and all of whom have different ideas about how things should work. For every time there&#x27;s some easy setting that nicely handles every platform for you there&#x27;s another where you have to carefully distinguish between VC++&#x2F;gcc&#x2F;clang&#x2F;etc. and add compiler-specific flags to some random string. And the scripting &quot;language&quot; is unhinged.<p>Still - compared to a normal project that targets N platforms, where you might well have to deal with N build systems, all appalling, if you use cmake, you&#x27;ll only have to deal with one.