When working on projects, it’s often useful to be able to repeatedly run a command on some number of input files. Given that such a command depends only on those input files, we only need to rerun the command when one of the inputs changes.
Using a Makefile makes this process much easier to manage; programmers can list the commands and dependencies in a Makefile and can then rely on the Makefile to only rerun commands as necessary. This is typically a useful tool when compiling code (listing the code files once in a Makefile is much easier than listing them all out in the shell everytime you want to compile!), but this is far from the only use for Makefiles.
make
and write Makefiles