6 ms·
`just` seems like a useful tool, but it only covers a secondary use case of `make`. `make` without a dependency graph is like a bicycle without wheels.
by oftenwrong 5y ago
`just` seems like a useful tool, but it only covers a secondary use case of `make`. `make` without a dependency graph is like a bicycle without wheels.
- masklinn 5y agoAll I can say is that I’ve only ever used make as a task runner myself, so just matches my need way better. IME make’s model is often too simplistic to be of use, so it simply gets in the way of tools already doing things internally with proper insight, or requires force-cleaning everything because it's too dumb and just breaks the build when you e.g. switch branch. Just’s author is also looking at integrating `redo` for building / dependency tracking, though the issue has no activity since it’s been created.
- jandrese 5y agoIf you find yourself running "make clean" because it is "too dumb" you've built your Makefile wrong. Usually it means you've tried to manually re-create the inherent Make rules and have gotten it wrong somewhere. This is incredibly common, since the inherent rules are not always the same across various versions of Make and people don't always trust them. IMHO, this is the primary weakness of Make. The standardization efforts never really happened so you have various forks of 1980s code with annoying incompatibilities. BSD Make is missing some of the implicit build rules from GNU Make (only able to compile simple single source file applications without an explicit rule), and Windows Make tends to be extremely primitive. Worse, Make still in 2022 can't handle spaces in file names, like c:\Documents and Users\. I would be so much happier if everybody could standardize on one flavor of Make. Probably GNU Make.
- teddyh 5y ago> I would be so much happier if everybody could standardize on one flavor of Make. Probably GNU Make. With included Guile scripting support! https://www.gnu.org/software/make/manual/html_node/Guile-Example.html https://www.gnu.org/software/make/manual/html_node/Guile-Exa...
- slaymaker1907 5y agoOnly if your version of Make is compiled with it. "GNU make may be built with support for GNU Guile..." https://www.gnu.org/software/make/manual/html_node/Guile-Integration.html#Guile-Integration https://www.gnu.org/software/make/manual/html_node/Guile-Int... I really wish it was more common because having it would be great.
- teddyh 5y agoOn Debian and Debian-based system you can install the “make-guile” package.
- masklinn 5y ago> If you find yourself running "make clean" because it is "too dumb" you've built your Makefile wrong. What's built wrong is make itself. Because the signal it uses for "this dependency has changed" is the mtime, any change which does not move the mtime forwards will be ignored. Switching between concurrent git branches, for instance. > Usually it means you've tried to manually re-create the inherent Make rules and have gotten it wrong somewhere. And pray tell how do you "manually re-create the implicit make rules" when such rules don't exist? GNU Make has implicit rules for C, C++, Pascal, Fortran, Raftor, Modula-2, and assembly. That is, frankly, not much. And mostly outdated.