**What does a makefile tell `make`?**
A makefile tells `make` *how to compile and link a program.*
**What does a simple makefile consist of?**
A simple makefile consists of *rules.*
**What is a rule in a makefile?**
In a makefile, a rule is *a description of how and when to remake certain files which are the targets of a particular rule.*
**What does a rule look like?**
A rule looks like this:
```makefile
target(s) ... : prerequisite(s) ...
recipe(s)
...
...
```
> **What is a** ***target?***
> A target is *the name of a file to be generated or the name of an action to carry out.*
>
> **What is a** ***prerequisite?***
> A prerequisite is *a file that's used as input to create a target.*
>
> **What is a** ***recipe?***
> The recipe is *an action that `make` carries out.*
> > **What do you need to put at the beginning of every recipe line?**
> > You need to put *a tab* at the beginning of every recipe line?
> > > **What can you do if you want to use a different prefix other than tab for recipes?**
> > > If you want to use a different prefix other than tab for recipes, *set the `.RECIPEPREFIX` variable to an alternate character.*
>
> **`make` carries out the ... on the prerequisites to create or update the ...**
> `make` carries out the *recipes* on the prerequisites to create or update the *target.*
**How do you split lines in a makefile?**
To split lines in a makefile, *put a backslash at the end.*
**What does `make` not know anything about when it comes to recipes?**
When it comes to recipes, `make` does not know anything about *how the recipes work.*
> **What is your responsibility in writing recipes for `make`?**
> Your responsibility in writing recipes for `make` is *to write the recipes that will update the target file properly.*
**What are targets which don't refer to actual files called?**
Targets which don't refer to actual files are called *phony targets.*
**Which target does `make` start with by default?**
By default, `make` starts with *the first target written even if it's in a series of targets.*
> **What is the target that `make` starts with also called?**
> The target that `make` starts with is also called *the default goal.*
**`make` doesn't start with targets beginning with ... unless they also contain one or more ...**
`make` doesn't start with targets beginning with `.` unless they also contain one or more `/`.
**What are goals?**
Goals are *targets that `make` strives to ultimately update.*
> **What are the two ways you can override the default goal in `make`?**
> The two ways you can override the default goal in `make` are:
> 1. Writing the name of the target as an argument.
> 2. Setting the value of the `.DEFAULT_GOAL` variable.
**What must `make` do before it can fully process a rule?**
Before `make` can fully process a rule, it must *process the rules for the prerequisites.*
**When does `make` run the recipe to regenerate a target?**
`make` will regenerate or recompile a target *if the file doesn't exist or if its prerequisite files are newer than it.*
...