[Chapter 19] The make Utility
Author: Daniel Gilly & the Staff of O'Reilly & Associates
Date: 1998-08-06T22:02:04Z

#

| Chapter 19 |

# 19. The make Utility

Contents:
Command-line Syntax
Description File Lines
Macros
Special Target Names
Sample Default Macros, Suffixes, and Rules

This section presents the following topics:

- Command-line syntax

- Description file lines

- Macros

- Special target names

- Sample default macros, suffixes, and rules

For a detailed description of make, refer to the Nutshell Handbook, Managing Projects with make.

The make program generates a sequence of commands for execution by the UNIX shell. It uses a table of file dependencies input by the programmer, and with this information, can perform updating tasks automatically for the user. It can keep track of the sequence of commands that create certain files, and the list of files that require other files to be current before they can operate efficiently. When a program is changed, make can create the proper files with a minimum of effort.

## 19.1 Command-line Syntax

> make [`options`] [`targets`] [`macro definitions`]

Options, targets, and macro definitions can appear in any order. Macros definitions are typed as:

>     name=string

### 19.1.1 Options

-e

  Environment variables will override any macros defined in description files.

-f `file`

  Use `file` as the description file; a filename of `-` denotes standard input. `-f` can be used more than once to concatenate multiple description files. Default file is `makefile` or `Makefile`.

-i

  Ignore error codes from commands (same as `.IGNORE`).

-k

  Abandon the current entry when it fails, but keep working with unrelated entries.

-n

  Print commands but don't execute (used for testing). `-n` prints lines even if they begin with @ in the description file.

-p

  Print macro definitions, suffixes, and target descriptions.

-q

  Query; return 0 if file is up-to-date; nonzero otherwise.

-r

  Do not use the default rules.

-s

  Do not display command lines (same as `.SILENT`).

-t

  Touch the target files, causing them to be updated.

18.5 Alphabetical Summary of Commands |  | 19.2 Description File Lines