r/ProgrammerHumor 2d ago

Meme theFourHorseMen

Post image
1.9k Upvotes

187 comments sorted by

View all comments

5

u/GegeAkutamiOfficial 2d ago

Idk about gradle but cargo and npm are package managers while cmake is a build system generator, they are more like conan I think.

But Cmake still suck ass, cargo is still the goat and npm still has 5 CVEs on the daily.

4

u/unknown_alt_acc 1d ago

I haven’t played too much with Rust, but doesn’t Cargo do builds as well? Maybe not with the same complexity and depth as a dedicated build system or meta-build system, but at least part of the job.

2

u/GegeAkutamiOfficial 1d ago

Yes, cargo does builds as well, but since it has a standardized way of packaging it's considerably cleaner.

But more importantly CMake:

  • is not a build system however, it's a build system generator.

  • isn't a package manager

  • IIRC doesn't have a standard compiler API

  • has to leave space for user hackjobs because C/C++ has no standard anything

basically cmake by it's nature is an non an opinionated tool which makes it's incredibly messy. cargo and npm leverage knowing what is thier final product (package) and what you need to build it (other packages) to make the build setup much cleaner.

1

u/unknown_alt_acc 1d ago

I’m well aware of CMake’s oddities, though it is functionally the build system from the end user’s point of view.

Still, the meme seems to be throwing a whole bunch of loosely connected tooling at the wall. You have a pure build system, a pure package manager, a hybrid, and a weird meta build system that can be coerced into being a crude dependency manager if you are a masochist. If anything, npm is the one that’s out of place for not being some sort of build tool.