Hacker News new | ask | show | jobs
by RazrFalcon 3082 days ago
If we are talking about C++ then the problem is that there a too many build systems and all of them are incompatible.

CMake is quite popular (and maybe most popular) but it's a complete horror in comparison to other build systems, especially for other languages (like Cargo for Rust).

If you need some specific example: try to add a git-based dependency with a specific branch in CMake.

2 comments

Build systems should be agnostic from source control systems.

The unit of dependencies should be other projects or binary libraries.

I'm not sure about that. If you have dependencies to other internal repositories and to specific revisions, it is not clear who is responsible. Make can be agnostic, but Maven or NPM probably can not.
Maven surely can. You only depend on binary versions of Java libraries, no source code, as it should be.
My first idea would be to use git-submodule and keep CMake ignorant of that.