2 ms·
* lack of dependency management * no concept of versions to declare API compatibility * no easy way to hook into a central package repository * source files
by jupp0r 8y ago
* lack of dependency management
* no concept of versions to declare API compatibility
* no easy way to hook into a central package repository
* source files to build have to be named manually in CMakeLists.txt
* header dependencies can easily be wrongly declared, which is never noticed
* the language is hard to work with
* it's quite slow for large projects (10s of thousands of compilation units)
* cross-language builds are a pain (C++ + JS)
I'm not saying this is all CMake's fault, I really like it for the reasons you outlined. At work, we are transitioning to Bazel to get rid of some of the pain points above, although it has different problems.
Having worked on some larger Go and Rust projects, I find the integration of language and build tools to be fantastic to work with and wish the C++ community would come up with a practical solution (probably involving Modules TS) at some point.