5 ms·
I spent several years creating and maintaining a large, proprietary build system for a Linux-based operating system at a previous gig. Much of userspace was C/C
by cjk 4y ago
I spent several years creating and maintaining a large, proprietary build system for a Linux-based operating system at a previous gig. Much of userspace was C/C++, and thus used CMake. To further complicate things, most of userspace needed to be cross-compilable for a macOS-based "simulator" environment.
I ended up being fairly proficient with the "modern" CMake language after investing a ton of time into it, but as the size of the company grew, I ended up being a bottleneck. Every other team found themselves subject to CMake's many footguns, and I'd end up having to step in to help.
It was maddening, but I 100% get that other teams just wanted to focus on getting their work done, rather than fighting with a poorly-documented and frustrating build system.
I, for one, would be very happy to see a new CMake scripting language. Ideally, one that is a lot more friendly for beginners and occasional users.
- palata 4y ago> I 100% get that other teams just wanted to focus on getting their work done Getting your project to build properly should be part of "getting the work done". Modern software is way too much about stacking up hacks to "get the work done" instead of writing proper code. Sure, there could be a better way than CMake. But it's not that hard to learn the basics.
- dale_glass 4y agoThe basics are rarely the problem. The issue is that most any large project ends up wanting to do something slightly unusual, and things quickly get weird there. Eg, you'd think downloading a file in cmake would be fairly straightforward, but it's not really.
- palata 4y agoI would question why you need to download the file from cmake.
- dale_glass 4y agoWe have a test harness, and some of the tests want test files. Committing a bunch of large binaries to git doesn't seem like the right way to go, and the files are only needed if the tests are going to be run. Now I could build the download into the test itself, but that's extra stuff that's not part of the test proper.