Products · Product
CMake
Raised as a usability problem by 154 people on Hacker News over 16 years (2011–2026), in 123 threads.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Every issue, all time, most people first
Build tools need a complicated setup and poor documentationUnreviewed
20112026- Hard to understand build system well enough to fix niche errors, so user gives up2025-07-18
- Build system is a long-standing frustration that the commenter still dislikes2025-04-26
- Build tool's scripting language is awful, with tedious workarounds and misfeatures2025-01-31
Getting the project to compile and debugging the build is painfulUnreviewed
20112026- Building C++ projects means constantly fighting the build configuration tool2025-12-31
- Lack of a standard build system makes C++ projects hard to set up and include2024-12-24
- Build configuration is too flexible, so projects vary wildly and get complex2021-01-09
Build setups work only on one machine and options are undocumentedUnreviewed
20112026- Setting build options with -DCMAKE variables is awkward and horrible to use2024-04-04
- Must create a build directory and hunt obscure -D options to build2024-04-04
- Build setups often work only on the developer's machine; options are undocumented2024-03-30
Configs come from trial, error and copying, not understandingUnreviewed
20112026- Can't learn how to use it; configs come from trial and error and copying2023-02-28
- Configuration language has no real definition, making it painful to use2022-08-06
- Hard to learn; configs break when moved to another system2020-10-24
Error messages for missing dependencies are unhelpfulUnreviewed
20112026- Build fails late after minutes of output, with an uninformative error about a missing library2021-01-26
- Refuses to find dependencies and generates bad makefiles on less-common OSes2018-02-15
- Gives unhelpful error messages for missing dependencies compared to make2012-06-13
Dependencies must be hunted manually; FindX scripts fail across platformsUnreviewed
20112026- Dependency finding often fails even for libraries installed via system package manager2020-10-21
- Dependencies must be hunted down manually, and FindX scripts often fail across platforms2017-02-07
- Dependencies are tedious and painful to build and detect cross-platform2016-12-28
Wrong code runs silently instead of failingUnreviewed
20112026- Syntax is horrible and semantics confusing; correct usage is weird and unintuitive2025-04-16
- Syntax is not intuitive and wrong code can run without failing2021-05-25
- Confusing stringly typed syntax and boolean rules make it painful to program in2016-01-31
Debugging why library paths aren't found takes hoursUnreviewed
20112026- Debugging failures is very hard, spending hours figuring out why library paths aren't found2025-12-05
- Cross-compilation failures are incomprehensible and impossible to debug2018-02-28
- Very difficult to debug, e.g. finding why a library test fails2011-03-23
Unintuitive syntax full of footguns that wastes hoursUnreviewed
20112026- Confusing syntax and hidden footguns make it easy to do the wrong thing2025-05-30
- Many footguns and poor documentation make it frustrating for non-experts to use2022-12-06
- Non-standard, unintuitive, full of footguns; can be an infuriating timesink2020-09-23
Hard to find where a variable is defined when debuggingUnreviewed
20112026- Hard to debug, many ways to do same thing, hard to understand abstraction2020-09-23
- Problems are hard to debug and the right way to use it keeps changing2020-05-25
- Hard to debug; even finding where a variable is defined is difficult2013-02-25
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Spent two days failing to set up CMake, gave up2026-08-19
- Major projects' CMake builds can't be cleanly depended on, with raw variables and broken feature detection2026-04-09
- Setting up projects takes an hour of writing CMake, finding packages, and debugging linking2026-04-09
- Installing CMake and Ninja needed figuring out, unlike Eclipse IDEs where setup just works2026-03-10
- Hard to find the right UUID needed to enable import std2026-01-29
- Building C++ projects means constantly fighting the build configuration tool2025-12-31
- CMake setup is unpleasant, though manageable once a basic file is working2025-12-16
- Debugging failures is very hard, spending hours figuring out why library paths aren't found2025-12-05
- Listing configuration options with -LAH is awkward and hard to read2025-11-13
- Becomes an unreadable mess of unspelled rules and can't be stepped through to see what it does2025-09-17
- Hard to see why builds take so long; unclear what triggers recompiles2025-08-15
- Hard to understand build system well enough to fix niche errors, so user gives up2025-07-18
- Confusing syntax and hidden footguns make it easy to do the wrong thing2025-05-30
- Build system is a long-standing frustration that the commenter still dislikes2025-04-26
- Must manually regenerate build files for an unused compiler and copy them into project root2025-04-25
- Syntax is horrible and semantics confusing; correct usage is weird and unintuitive2025-04-16
- Build tool's scripting language is awful, with tedious workarounds and misfeatures2025-01-31
- Quirky tool needs effort to memorize, so users forget and make costly mistakes2025-01-27
- Developers trial-and-error and copy-paste until a messy CMake setup works, and it is hard to use2025-01-26
- Obscure syntax and unclear docs make it hard to know how to make builds work2024-12-28
- Lack of a standard build system makes C++ projects hard to set up and include2024-12-24
- Configuring CMake projects requires custom cache variables and is so onerous the commenter finds the GUI easier2024-11-28
- Docs dump long explanations for each function without saying what it does or how to use it2024-09-21
- Messy scripts make it unclear what the build is actually doing and which flags are used2024-09-21
- Terrible syntax, and real projects devolve into convoluted abstraction nonsense2024-05-17
- CMake's variable scope and bespoke code made build scripts painfully hard to write and maintain2024-05-05
- Hard to trace failures back to original inputs when things go wrong2024-04-07
- Hard to figure out which MSVC flags match GCC flags2024-04-04
- Setting build options with -DCMAKE variables is awkward and horrible to use2024-04-04
- Must create a build directory and hunt obscure -D options to build2024-04-04
- Build setups often work only on the developer's machine; options are undocumented2024-03-30
- CMake, include conflicts and dependency management are painful to deal with in C++2024-03-28
- Documentation is verbose yet unhelpful, leaving users to learn by trial and examination2024-03-08
- Hard to stop builds silently picking up system libraries; sysroot fiddling may still leak2023-11-28
- Integrating libraries that don't use CMake is very difficult2023-11-22
- Compiler paths with spaces fail with inscrutable errors or bizarre compiler behavior2023-11-08
- CMake's DSL and documentation are terrible to work with2023-10-24
- Opaque, undiscoverable incantations that change with every undocumented revision2023-09-28
- Author finds the CMake-based setup painfully difficult and uncomfortable to use2023-08-11
- Main docs lack examples, so learners struggle to understand how to use it2023-07-17
- Functions are statements, so nested calls need multiple separate steps2023-06-25
- Design flaws make the tool feel user-hostile and hard to work with2023-06-25
- Must hand-write CMakeLists, with lots of repetitive boilerplate and errors2023-04-20
- Convoluted logic, overcomplicated docs, and too many ways to shoot yourself in the foot2023-03-25
- Tool is so badly designed it is maddening to use2023-03-01
- Autotools made options discoverable via configure --help, while CMake is harder for end users to tell how to find a library2023-02-28
- Many predefined SHOUTY_CASE constants and variables make it look confusing2023-02-28
- Can't learn how to use it; configs come from trial and error and copying2023-02-28
- Has to look up generate versus build command every time despite years of use2023-02-28
- Generated project defaults to wrong target and compiler, forcing manual fixes2023-02-28