4 ms·
What constitutes “modern” here? ~15 years ago I was bitten by the CMake bug and enjoyed it for years until I got frustrated by it getting 90% of the job done an
by bch 3y ago
What constitutes “modern” here? ~15 years ago I was bitten by the CMake bug and enjoyed it for years until I got frustrated by it getting 90% of the job done and having to fight it for the last 10%. These days I have “reverted” back to BSD Make, and feel pretty good about it.
So… when did CMake start its “modern” phase? Does my experience resonate with yours at all?
- plorkyeran 3y agoThe switch over to doing everything via target properties is the big difference between "modern" and "old school" CMake. This fixed a lot of CMake's problems other than the scripting language being awful and has mostly happened over the last decade. CMake release notes pretty consistently have at least one thing that makes me go "how is that a thing that just got implemented now and not 20 years ago?" That's not exactly a positive, but there are a very large number of things where 15 years ago you'd be shocked and frustrated to discover that there's no good way to do it, while today there's an obvious and simple way.
- o11c 3y agoI stopped considering CMake when I reported a bug (that worked in all major alternatives) and they actively refused to patch it (because it was based on a traditionally-UNIX API, and they refused to use it ... even though it was available on Windows too!).
- mathstuf 3y agoFD: CMake developer Do you mind pointing me to that issue? Off-HN is fine too (same GitHub handles here; grab an email address from commit metadata).
- o11c 3y agoI don't remember the exact details anymore, but it related to not using `access(X_OK)` to check that a file in PATH was actually executable.
- mathstuf 3y agoHmm. I see issues about finding executable-but-not-readable files, but nothing about `access(X_OK)` specifically (though GitLab's search may be failing here). Anyways, there are a number of…unfortunate behaviors that are baked in too deeply and take far longer to uproot than anyone likes. For example, the `EXISTS` predicate checked for readability…probably what was usually wanted, but sadly falls over when a broken symlink is left laying around. That one was fixed recently, but they crop up often enough. Also note that while Windows might have POSIX APIs, sometimes the semantics are just not quite right. File permissions is one such place where things "exist" but act like they're in an alternate dimension (e.g., what would `umask` do on Windows?).