CMake
Ranked 3 of 17 build systems by recommenders
Widely used cross-platform build system that handles compilation, dependencies and toolchains; people cite its wide toolchain support, but its scripting language is widely criticized as awkward.
Widely used cross-platform build system that handles compilation, dependencies and toolchains; people cite its wide toolchain support, but its scripting language is widely criticized as awkward.
151 people gave an opinion
- recommend it
- 58
- criticize it
- 93
- approval share
- 38%
Recommended in 12 of 13 months
- November 2025: recommended
- December 2025: recommended
- January 2026: recommended
- February 2026: recommended
- March 2026: recommended
- April 2026: recommended
- May 2026: recommended
- June 2026: recommended
- July 2026: recommended
- August 2026: recommended
- September 2026: recommended
- October 2026: recommended
- November 2026: not recommended (month in progress)
Why it doesn’t carry the badge
- 58 people recommend itNeeds 10 or more, met.
- 0.6 recommenders for every criticNeeds 2 to 1 or better, not met.
- Recommended in 12 of 13 monthsNeeds 4 or more, met.
The same three rules apply to every product, and the badge can’t be bought. How the badge works
What people say about it
The reasons people give, with the number of comments that give each one. Open a reason to read what they said.
Why people recommend it
Each mark is one comment
Works across platforms and toolchains
“CMake does three main things: Compilation with dependency tracking, finding external dependencies, and platform-independence.”
Comment from 11 Apr 2026 in “I built a Cargo-like build tool for C/C++” “just installing LLVM, CMake and Ninja is enough to get started developing on Windows”
Comment from 15 Feb 2026 in “I Fixed Windows Native Development” “CMake is quite crufty, but there's toolchains for every system under the Sun”
Comment from 5 Dec 2025 in “Why we built Lightpanda in Zig” - Comment from 5 Aug 2026 in “Faster Than Ninja”
Large user base and IDE support
“CMake has a tremendous user mass, so you do want to be able to use a CMake-based project as a dependency.”
Comment from 10 Apr 2026 in “I built a Cargo-like build tool for C/C++” “CMake works so well that companies such as Jetbrains developed their C++ IDEs around it”
Comment from 19 Aug 2026 in “The Two Factions of C++” Rebuilds only what has changed
“CMake only reruns, when CMakeLists.txt has changed. That doesn't happen a lot after the core of the project has been set up for me.”
Comment from 3 Mar 2026 in “Making Video Games in 2025 (without an engine)” “Build time went from 10 minutes to 2 minutes and now we have ability just to build what has changed.”
Comment from 11 Mar 2026 in “Practical Guide to Bare Metal C++” Fixes many weird build edge cases
“Cmake has a lot of warts, but they have also put a lot of effort into finding and fixing all those weird special cases.”
Comment from 9 Apr 2026 in “I built a Cargo-like build tool for C/C++” “Cmake is starting to get all the possible weirdness right without scripts”
Comment from 10 Apr 2026 in “I built a Cargo-like build tool for C/C++”
What people warn about
Each mark is one comment
Awkward, hard-to-learn scripting language
“I love to hate cmake as much as the next guy, and it would be hard to design a worse scripting language”
Comment from 9 Apr 2026 in “I built a Cargo-like build tool for C/C++” “CMake is a combination of a warthog of a specification language, and mechanisms for handling a zillion idiosyncracies and corners cases of everything.”
Comment from 9 Apr 2026 in “I built a Cargo-like build tool for C/C++” “CMake as a language makes PHP look good. Whenever I have to use it, there's a whole lot of warnings and often errors, too.”
Comment from 12 Apr 2026 in “Dcmake: A new CMake debugger UI” - Comment from 28 Nov 2025 on Hacker News
- Comment from 25 Nov 2025 in “Migrating to Bazel symbolic macros”
- Comment from 5 Dec 2025 in “CSS now has an if() conditional function”
Accumulated cruft and workarounds
“tons of accumulated workarounds for all the different host operating systems, compiler toolchains and IDEs”
Comment from 9 Apr 2026 in “I built a Cargo-like build tool for C/C++” “CMakes piles up various generations of idioms so there are multiple ways of doing it”
Comment from 9 Apr 2026 in “I built a Cargo-like build tool for C/C++” “Cmake itself exists because a lot of humans haven't bothered to read the gnu make manual, and added more cruft to manage this.”
Comment from 9 Apr 2026 in “I built a Cargo-like build tool for C/C++” Slow builds and setup pain
“Getting all of LLVM mesa linux cmake ninja glibc gcc binutils xorg KDE to work is more work than in 2005 or 2010.”
Comment from 21 Jan 2026 in “Linux from Scratch” “we switched from CMake to a handrolled typescript build system and it made our builds faster and simpler”
Comment from 27 Jul 2026 in “How is the Bun Rewrite in Rust going?” “cmake, npm, pip, maven, etc. all live in this realm where any invocation could become a time purgatory.”
Comment from 12 Dec 2025 in “The Tor Project is switching to Rust” Errors and failures despite passing
“Cmake has been better but still sometimes cmake will pass and the code still doesn't build”
Comment from 3 Aug 2026 in “Celebrating 45 Years of Kermit with the First New C-Kermit Release in 15 Years” “I hit an absolutely ludicrious number of errors for effectively a hello world”
Comment from 25 Jul 2026 in “The PImpl idiom and the C++26 std:indirect type” “CMake as a language makes PHP look good. Whenever I have to use it, there's a whole lot of warnings and often errors, too.”
Comment from 12 Apr 2026 in “Dcmake: A new CMake debugger UI”
Other build systems people recommend
The four most recommended other build systems, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.
| Product | Recommend | Criticize | Approval | Months | Owned | Badge |
|---|---|---|---|---|---|---|
| Bazel | 79 | 41 | 66% | 12 | 3 yrs3 owners | — |
| GNU Make | 76 | 42 | 64% | 12 | — | — |
| CMakeThis page | 58 | 93 | 38% | 12 | — | — |
| Apache Maven | 44 | 42 | 51% | 12 | — | — |
| Ninja build system | 37 | 10 | 79% | 11 | — | Approved |
What people said
40 of the 190 comments that mention it, newest first. Each links to the original comment.
“CMake works so well that companies such as Jetbrains developed their C++ IDEs around it”
“cmake just worked every time when I plugged in the toolchain file”
“In general, CMake is fast enough, the only slow bit on the critical path is detecting the toolchain.”
“CMake cache variables are individually settable and come with types and docstrings.”
“Cmake has been better but still sometimes cmake will pass and the code still doesn't build”
“we switched from CMake to a handrolled typescript build system and it made our builds faster and simpler”
“I hit an absolutely ludicrious number of errors for effectively a hello world”
“Naturally if you cannot be on latest compiler releases, or suffer from CMake phobia, the support isn't there.”
“I recommend you start by getting acquainted with CMake and its state of modules support.”
“instead of dealing with CMake and Autotools, I now have to deal with CMake, Autotools and Meson”
“CMake as a language makes PHP look good. Whenever I have to use it, there's a whole lot of warnings and often errors, too.”
“CMake does three main things: Compilation with dependency tracking, finding external dependencies, and platform-independence.”
“CMake has a tremendous user mass, so you do want to be able to use a CMake-based project as a dependency.”
“Cmake is starting to get all the possible weirdness right without scripts”
“CMake is a combination of a warthog of a specification language, and mechanisms for handling a zillion idiosyncracies and corners cases of everything.”
“take advantage of what CMake is good at while making the more difficult operations easier”
“I love to hate cmake as much as the next guy, and it would be hard to design a worse scripting language”
“As much of a dog as cmake is, "just use make!" does not solve many of the problems that cmake makes a go at.”
“Cmake itself exists because a lot of humans haven't bothered to read the gnu make manual, and added more cruft to manage this.”
“Cmake has a lot of warts, but they have also put a lot of effort into finding and fixing all those weird special cases.”
“CMakes piles up various generations of idioms so there are multiple ways of doing it”
“That's why meta-build-systems like cmake were created, not to be a better GNU Make.”
“tons of accumulated workarounds for all the different host operating systems, compiler toolchains and IDEs”
“All the main build tools (cmake, meson/ninja and GNU configure) have different benefits”
“I thought I knew a lot of CMake, but file sets definitely make things a lot simpler.”
“it took me weeks to understand what good and what bad CMake code looks like”
“Build time went from 10 minutes to 2 minutes and now we have ability just to build what has changed.”
“CMake only reruns, when CMakeLists.txt has changed. That doesn't happen a lot after the core of the project has been set up for me.”
“Both of these alternatives use a build system I can trust over randomgithubproject.exe”
“just installing LLVM, CMake and Ninja is enough to get started developing on Windows”
“We've come a long way to replace simple Makefile with autotools (incredible monstrocity), cmake, ninja etc.”
“To match the npm or pip model you'd go with nix or guix or cmake and you'd vendor everything”
“Getting all of LLVM mesa linux cmake ninja glibc gcc binutils xorg KDE to work is more work than in 2005 or 2010.”
“I'd recommend that you use CMake with a CMake toolchain file targeting Winelib”
“CMake doesn't spark joy, but it's not something you need to touch constantly.”
“cmake, npm, pip, maven, etc. all live in this realm where any invocation could become a time purgatory.”
“CMake is quite crufty, but there's toolchains for every system under the Sun”
“All these started with pure declarative DSL then incrementally created a nightmarish imperative monstrosity.”
“I find CMake intensely offensive, just the whole worldview of every tool demanding you learn some DSL to do basic things”
“Even with the weird configuration language it has, it's still preferable to the horrible agglomeration of m4 macros”
Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.