manpagez: man pages & more
info make
Home | html | info | man

File: make.info,  Node: Rule Introduction.php">Introduction,  Next: Simple Makefile,  Prev: Introduction.php">Introduction,  Up: Introduction.php">Introduction

2.1 What a Rule Looks Like
==========================

A simple makefile consists of "rules" with the following shape:

     TARGET ... : PREREQUISITES ...
             RECIPE
             ...
             ...

   A "target" is usually the name of a file that is generated by a
program; examples of targets are executable or object files.  A target
can also be the name of an action to carry out, such as 'clean' (*note
Phony Targets::).

   A "prerequisite" is a file that is used as input to create the
target.  A target often depends on several files.

   A "recipe" is an action that 'make' carries out.  A recipe may have
more than one command, either on the same line or each on its own line.
*Please note:* you need to put a tab character at the beginning of every
recipe line!  This is an obscurity that catches the unwary.  If you
prefer to prefix your recipes with a character other than tab, you can
set the '.RECIPEPREFIX' variable to an alternate character (*note
Special Variables::).

   Usually a recipe is in a rule with prerequisites and serves to create
a target file if any of the prerequisites change.  However, the rule
that specifies a recipe for the target need not have prerequisites.  For
example, the rule containing the delete command associated with the
target 'clean' does not have prerequisites.

   A "rule", then, explains how and when to remake certain files which
are the targets of the particular rule.  'make' carries out the recipe
on the prerequisites to create or update the target.  A rule can also
explain how and when to carry out an action.  *Note Writing Rules:
Rules.

   A makefile may contain other text besides rules, but a simple
makefile need only contain rules.  Rules may look somewhat more
complicated than shown in this template, but all fit the pattern more or
less.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.