Friday, April 15, 2016

CMake Rant

Arrggghh!!!   I wasted quite some time this afternoon tracking down a crash I was getting in one specific case, where it didn't make any sense at all that it was failing. After trying a lot of things to debug the situation, it only dawned on me quite late that it was the build system at fault here: that is, IT WAS CMAKE's fault. Again.

Why am I not surprised? Well, to this day, I still cannot trust that it's going to actually rebuild what I ask it to, when I ask it to, with everything it's supposed to be using. Heck, even finding out if it actually rebuilt the file or whether it skipped over it is not that easy (in short: it's output is a messy verbose dump of internal diarrhea).

Now, even if it did rebuild the file in question, it may have done so with the wrong settings.  Yay to "config first, then build".

Even worse though, is if it silently omits to add certain flags which you'd expect are included as standard-issue features, and requires you to actually manually add it in in every place where you might use it (*1).... The only way you'll know that has happened? After your code mysteriously keeps failing in bizarre ways, after several hours of debugging.

Gah.  And all that for two little buttons that probably won't be used that much anyway!

</end rant>

(*1 - To be fair, the flag-omitting is probably more of a design choice made in our cmake buildscripts. That said, it's a bloody annoying one if you don't know about it!)
(*2 - It's good to finally get this thing off my desk at last... It's been sitting around, blocked while I've had to work on other stuff, for the past few weeks since Easter....)

No comments:

Post a Comment