Beyond those quality concerns are the practicalities of a build system. To discuss this in concrete terms, we’ll talk about make, a specific build system, and makefiles a lot—don’t worry too much; barring syntactic differences, other build systems follow similar conventions (even the pretty graphical ones).
Choice of Targets
Makefiles define rules that describe how to build targets. (Remember: Other build systems work in a very similar manner, even if the terminology is subtly different.) The system is clever enough to infer all intermediate targets and build those along the way. A single makefile can contain multiple targets. This allows you to use one build system to generate several different outputs, such as:
Distinct programs (commonly ...