
You can think of the target name as our output file like objects or executables. The target name is provided first followed by a colon and then a prerequisite list.

These rules and output house typically require other files such as dependencies like object files or header files, for our final output executable to be built. Each makefile may consistently set up build rules or build targets that generate output files. However, there are set defaults that make looks for such as the name makefile. You could give your makefile any name as long as you pass the file into make. To create a makefile, you just need to create a textfile and save it as makefile. Make is given directions on what to compile via one or more makefiles. Adding the output files into version control just adds excess bloat to your repository and is unneeded. You should not store your output files in the repository because you will have all you need to create them, the source file and the akmefile. This allows us to record in our repo history exactly what we built with our software projects at any particular command. You can version control your makefile and you can update your bill process over time as our source code changes. Nick has provided a makefile which has many software language characteristics. In our case, you will be writing a makefile that stores all of the necessary configurations, flags, and commands in order to generate our build in other non-source files. These commands will of course be a mixture of our GCC commands to produce executables. In some cases, you will use shell scripts or other scripting languages to run a series of commands to generate needed executable files. Automating the build process is just like writing software.

In the last video, you learned make and build generation tools can help speed up your development process and instill better process into building projects. In this video, we'll be introducing the concepts to design your own makefiles.
