Title: CS201
1CS201 Makefile
2A Trivial Makefile
Trivial Makefile for puzzle1.c Ray S.
Babcock, CS201, MSU-Bozeman 1/5/05 puzzle1
puzzle1.c gcc o puzzle1 puzzle1.c
3A Trivial Makefile
Trivial Makefile for puzzle1.c Ray S.
Babcock, CS201, MSU-Bozeman 1/5/05 puzzle1
puzzle1.c gcc o puzzle1 puzzle1.c
COMMENTS
4A Trivial Makefile
Trivial Makefile for puzzle1.c Ray S.
Babcock, CS201, MSU-Bozeman 1/5/05 puzzle1
puzzle1.c gcc o puzzle1 puzzle1.c
Target
Targets Prerequisites
Dependency Line
5Whats happening here?
Source File
puzzle1.c
Gnu C compiler
gcc
Run Image
Depends on
puzzle1
6So whats a run image file?
- A run image file is an exact copy of the
computers ram memory containing the binary
equivalent of the program. - To run the program, you load the run image file
and point your computer to the start of the
program. This is done by typing the run image
file name at the operating system prompt. - puzzle1
7A Trivial Makefile
Trivial Makefile for puzzle1.c Ray S.
Babcock, CS201, MSU-Bozeman 1/5/05 puzzle1
puzzle1.c gcc o puzzle1 puzzle1.c
Time stamp on this file
is compared to the time stamp on this file.
Dependency Line
8A Trivial Makefile
Trivial Makefile for puzzle1.c Ray S.
Babcock, CS201, MSU-Bozeman 1/5/05 puzzle1
puzzle1.c gcc o puzzle1 puzzle1.c
Time stamp on this file
is compared to the time stamp on this file.
Dependency Line
If the targets time stamp is earlier than the
prerequisites time stamp, the rule below this
dependency line is executed.
9So what is a time stamp?
- The time that the file was last modified.
- If the targets time is earlier than the
prerequisites time, this means that the
prerequisite file has been changed, but the run
image has not been updated.
10A Trivial Makefile
Trivial Makefile for puzzle1.c Ray S.
Babcock, CS201, MSU-Bozeman 1/5/05 puzzle1
puzzle1.c gcc o puzzle1 puzzle1.c
Rule Line
Must be a tab!!
11A Trivial Makefile
Trivial Makefile for puzzle1.c Ray S.
Babcock, CS201, MSU-Bozeman 1/5/05 puzzle1
puzzle1.c gcc o puzzle1 puzzle1.c
Rule Line
Any Linux command
12Example time stamps
- Assume puzzle1 has TS Jan 16 1400
- Assume puzzle1.c has TS Jan 16 1355
- Target is LATER than prerequisite, so rule is NOT
executed!
13Example time stamps
- Assume puzzle1 has TS Jan 16 1300
- Assume puzzle1.c has TS Jan 16 1355
- Target is EARLIER than prerequisite, so rule is
executed!
14Example
- Build a source file with code for puzzle1.c
- Build a Makefile with an appropriate dependency
line. - Run make
- make
- gcc -o puzzle1 puzzle1.c
- The rule executes since the file puzzle1 does not
even exist yet!
15What if you tried make again?
- make
- make puzzle1 is up to date
-
16Makefile Summary
- Build a dependency line for every target.
- Add a rule line to rebuild the target.
- Start the rule line with a tab.
- Add comments to the top of the file.
- Save these lines in an ASCII file called
Makefile. (For now assume it must be exactly
that name, with a capital M).