▲ | x3n0ph3n3 10 hours ago | |||||||||||||||||||||||||||||||||||||||||||
I don't understand why people like make so much. Interacting with CLI tools using only env vars as arguments is cartoonishly bad dev experience. | ||||||||||||||||||||||||||||||||||||||||||||
▲ | zelphirkalt 10 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||
Make allows you to specify dependencies for you targets, which are also targets. As such you do not need to rely on brittle string concatenation approaches. It is a tool build for this. I personally like going to a project folder and run "make run", no matter what language or setup I have, to run the project. It enables me to unify access to projects. I also take great care to make these runs reproducible, using lock files and other things of the ecosystems I am using, whenever possible. I work on another machine? git clone, make run. Or perhaps git clone, make init, make run. | ||||||||||||||||||||||||||||||||||||||||||||
▲ | georgyo 10 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
I'm not so sure most people would agree with you. Though I think plenty would. I dare say that developers like environment variables more than before. Consider that Docker images, and hence Helm charts, are entirely controlled via environment variables. These very popular dev tools suffer from the same problem of having near-zero easy discoverability of what those environment variables might be. Yet they are very popular. But I don't think Make usually uses all that many environment variables. You're usually specifying build targets as the command line arguments. Automake and autogen usually generate these makefiles with everything hard-coded. Also, it makes it very easy to get started with, and it is universally available. Makes it very easy to like. | ||||||||||||||||||||||||||||||||||||||||||||
▲ | danlitt 9 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
Make is in POSIX, so it's generally available. Same reason people write shell scripts (even if the scripts are not generally POSIX-only). | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
▲ | cerved 9 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
I like it because it's language and tooling agnostic, declarative, fast and ubiquitous. Where it's less great is complicated recipes and debugging | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
▲ | zabzonk 10 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
You can pass arguments via the command line (it is, after all, a CLI tool): https://stackoverflow.com/questions/2826029/passing-addition... | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
▲ | motorest 7 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
> Interacting with CLI tools using only env vars as arguments is cartoonishly bad dev experience. Make excels at what it's design to do: specify a configurable DAG of tasks that generate artifacts, execute them, and automatically determine which subgraph requires updates and which can be skipped by reusing their artifacts. I wonder: which tool do you believe does this better than Make? | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
▲ | PhilipRoman 9 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
You don't have to write Make invocations by hand... It's just a tool that can be called from any editor or IDE (or by automatic file watchers). Environment variables aren't really relevant to Make either, unless you really want to misuse it as a command runner. | ||||||||||||||||||||||||||||||||||||||||||||
▲ | aboardRat4 8 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
Because make is a prolog in disguise. | ||||||||||||||||||||||||||||||||||||||||||||
▲ | hiAndrewQuinn 10 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
I often prefer to work in in extremis environments where there is no internet access, and hence, no easy way to get ahold of make; it's given me a bad habit of just waiting a build.bash script to do what make does most of the time. I haven't really found myself missing it that much. | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
▲ | globular-toast 10 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
It's 80% of what you want and it's installed everywhere. You could go for something closer to exactly what you want, but now you've got an extra set up step for devs and something else for people to learn if they want to change it. I would say if you're looking for cli args then you shouldn't be using any wrapper like make at all. Just call the underlying tool directly. Make is for doing big high level things in the standard way, nowadays quite often in CI pipelines. | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
▲ | 10 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
[deleted] | ||||||||||||||||||||||||||||||||||||||||||||
▲ | gjvc 7 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||
you don't do it naked, you write and use wrapper scripts to make it ergonomic |