| .TH MAKE 1 "28 February 2016" "GNU" "User Commands" |
| .SH NAME |
| make \- GNU make utility to maintain groups of programs |
| .SH SYNOPSIS |
| .B make |
| [\fIOPTION\fR]... [\fITARGET\fR]... |
| .SH DESCRIPTION |
| .LP |
| The |
| .I make |
| utility will determine automatically which pieces of a large program need to |
| be recompiled, and issue the commands to recompile them. The manual describes |
| the GNU implementation of |
| .BR make , |
| which was written by Richard Stallman and Roland McGrath, and is currently |
| maintained by Paul Smith. Our examples show C programs, since they are very |
| common, but you can use |
| .B make |
| with any programming language whose compiler can be run with a shell command. |
| In fact, |
| .B make |
| is not limited to programs. You can use it to describe any task where some |
| files must be updated automatically from others whenever the others change. |
| .LP |
| To prepare to use |
| .BR make , |
| you must write a file called the |
| .I makefile |
| that describes the relationships among files in your program, and the states |
| the commands for updating each file. In a program, typically the executable |
| file is updated from object files, which are in turn made by compiling source |
| files. |
| .LP |
| Once a suitable makefile exists, each time you change some source files, |
| this simple shell command: |
| .sp 1 |
| .RS |
| .B make |
| .RE |
| .sp 1 |
| suffices to perform all necessary recompilations. |
| The |
| .B make |
| program uses the makefile description and the last-modification times of the |
| files to decide which of the files need to be updated. For each of those |
| files, it issues the commands recorded in the makefile. |
| .LP |
| .B make |
| executes commands in the |
| .I makefile |
| to update one or more target |
| .IR names , |
| where |
| .I name |
| is typically a program. |
| If no |
| .B \-f |
| option is present, |
| .B make |
| will look for the makefiles |
| .IR GNUmakefile , |
| .IR makefile , |
| and |
| .IR Makefile , |
| in that order. |
| .LP |
| Normally you should call your makefile either |
| .I makefile |
| or |
| .IR Makefile . |
| (We recommend |
| .I Makefile |
| because it appears prominently near the beginning of a directory |
| listing, right near other important files such as |
| .IR README .) |
| The first name checked, |
| .IR GNUmakefile , |
| is not recommended for most makefiles. You should use this name if you have a |
| makefile that is specific to GNU |
| .BR make , |
| and will not be understood by other versions of |
| .BR make . |
| If |
| .I makefile |
| is '\-', the standard input is read. |
| .LP |
| .B make |
| updates a target if it depends on prerequisite files |
| that have been modified since the target was last modified, |
| or if the target does not exist. |
| .SH OPTIONS |
| .sp 1 |
| .TP 0.5i |
| \fB\-b\fR, \fB\-m\fR |
| These options are ignored for compatibility with other versions of |
| .BR make . |
| .TP 0.5i |
| \fB\-B\fR, \fB\-\-always\-make\fR |
| Unconditionally make all targets. |
| .TP 0.5i |
| \fB\-C\fR \fIdir\fR, \fB\-\-directory\fR=\fIdir\fR |
| Change to directory |
| .I dir |
| before reading the makefiles or doing anything else. |
| If multiple |
| .B \-C |
| options are specified, each is interpreted relative to the |
| previous one: |
| .BR "\-C " / |
| .BR "\-C " etc |
| is equivalent to |
| .BR "\-C " /etc. |
| This is typically used with recursive invocations of |
| .BR make . |
| .TP 0.5i |
| .B \-d |
| Print debugging information in addition to normal processing. |
| The debugging information says which files are being considered for |
| remaking, which file-times are being compared and with what results, |
| which files actually need to be remade, which implicit rules are |
| considered and which are applied---everything interesting about how |
| .B make |
| decides what to do. |
| .TP 0.5i |
| .BI \-\-debug "[=FLAGS]" |
| Print debugging information in addition to normal processing. |
| If the |
| .I FLAGS |
| are omitted, then the behavior is the same as if |
| .B \-d |
| was specified. |
| .I FLAGS |
| may be |
| .I a |
| for all debugging output (same as using |
| .BR \-d ), |
| .I b |
| for basic debugging, |
| .I v |
| for more verbose basic debugging, |
| .I i |
| for showing implicit rules, |
| .I j |
| for details on invocation of commands, and |
| .I m |
| for debugging while remaking makefiles. Use |
| .I n |
| to disable all previous debugging flags. |
| .TP 0.5i |
| \fB\-e\fR, \fB\-\-environment\-overrides\fR |
| Give variables taken from the environment precedence |
| over variables from makefiles. |
| .TP 0.5i |
| \fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR |
| Use |
| .I file |
| as a makefile. |
| .TP 0.5i |
| \fB\-i\fR, \fB\-\-ignore\-errors\fR |
| Ignore all errors in commands executed to remake files. |
| .TP 0.5i |
| \fB\-I\fR \fIdir\fR, \fB\-\-include\-dir\fR=\fIdir\fR |
| Specifies a directory |
| .I dir |
| to search for included makefiles. |
| If several |
| .B \-I |
| options are used to specify several directories, the directories are |
| searched in the order specified. |
| Unlike the arguments to other flags of |
| .BR make , |
| directories given with |
| .B \-I |
| flags may come directly after the flag: |
| .BI \-I dir |
| is allowed, as well as |
| .B \-I |
| .IR dir . |
| This syntax is allowed for compatibility with the C |
| preprocessor's |
| .B \-I |
| flag. |
| .TP 0.5i |
| \fB\-j\fR [\fIjobs\fR], \fB\-\-jobs\fR[=\fIjobs\fR] |
| Specifies the number of |
| .I jobs |
| (commands) to run simultaneously. |
| If there is more than one |
| .B \-j |
| option, the last one is effective. |
| If the |
| .B \-j |
| option is given without an argument, |
| .BR make |
| will not limit the number of jobs that can run simultaneously. |
| .TP 0.5i |
| \fB\-k\fR, \fB\-\-keep\-going\fR |
| Continue as much as possible after an error. |
| While the target that failed, and those that depend on it, cannot |
| be remade, the other dependencies of these targets can be processed |
| all the same. |
| .TP 0.5i |
| \fB\-l\fR [\fIload\fR], \fB\-\-load\-average\fR[=\fIload\fR] |
| Specifies that no new jobs (commands) should be started if there are |
| others jobs running and the load average is at least |
| .I load |
| (a floating-point number). |
| With no argument, removes a previous load limit. |
| .TP 0.5i |
| \fB\-L\fR, \fB\-\-check\-symlink\-times\fR |
| Use the latest mtime between symlinks and target. |
| .TP 0.5i |
| \fB\-n\fR, \fB\-\-just\-print\fR, \fB\-\-dry\-run\fR, \fB\-\-recon\fR |
| Print the commands that would be executed, but do not execute them (except in |
| certain circumstances). |
| .TP 0.5i |
| \fB\-o\fR \fIfile\fR, \fB\-\-old\-file\fR=\fIfile\fR, \fB\-\-assume\-old\fR=\fIfile\fR |
| Do not remake the file |
| .I file |
| even if it is older than its dependencies, and do not remake anything |
| on account of changes in |
| .IR file . |
| Essentially the file is treated as very old and its rules are ignored. |
| .TP 0.5i |
| \fB\-O\fR[\fItype\fR], \fB\-\-output\-sync\fR[=\fItype\fR] |
| When running multiple jobs in parallel with \fB-j\fR, ensure the output of |
| each job is collected together rather than interspersed with output from |
| other jobs. If |
| .I type |
| is not specified or is |
| .B target |
| the output from the entire recipe for each target is grouped together. If |
| .I type |
| is |
| .B line |
| the output from each command line within a recipe is grouped together. |
| If |
| .I type |
| is |
| .B recurse |
| output from an entire recursive make is grouped together. If |
| .I type |
| is |
| .B none |
| output synchronization is disabled. |
| .TP 0.5i |
| \fB\-p\fR, \fB\-\-print\-data\-base\fR |
| Print the data base (rules and variable values) that results from |
| reading the makefiles; then execute as usual or as otherwise |
| specified. |
| This also prints the version information given by the |
| .B \-v |
| switch (see below). |
| To print the data base without trying to remake any files, use |
| .IR "make \-p \-f/dev/null" . |
| .TP 0.5i |
| \fB\-q\fR, \fB\-\-question\fR |
| ``Question mode''. |
| Do not run any commands, or print anything; just return an exit status |
| that is zero if the specified targets are already up to date, nonzero |
| otherwise. |
| .TP 0.5i |
| \fB\-r\fR, \fB\-\-no\-builtin\-rules\fR |
| Eliminate use of the built\-in implicit rules. |
| Also clear out the default list of suffixes for suffix rules. |
| .TP 0.5i |
| \fB\-R\fR, \fB\-\-no\-builtin\-variables\fR |
| Don't define any built\-in variables. |
| .TP 0.5i |
| \fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR |
| Silent operation; do not print the commands as they are executed. |
| .TP 0.5i |
| \fB\-S\fR, \fB\-\-no\-keep\-going\fR, \fB\-\-stop\fR |
| Cancel the effect of the |
| .B \-k |
| option. |
| This is never necessary except in a recursive |
| .B make |
| where |
| .B \-k |
| might be inherited from the top-level |
| .B make |
| via MAKEFLAGS or if you set |
| .B \-k |
| in MAKEFLAGS in your environment. |
| .TP 0.5i |
| \fB\-t\fR, \fB\-\-touch\fR |
| Touch files (mark them up to date without really changing them) |
| instead of running their commands. |
| This is used to pretend that the commands were done, in order to fool |
| future invocations of |
| .BR make . |
| .TP 0.5i |
| .B \-\-trace |
| Information about the disposition of each target is printed (why the target is |
| being rebuilt and what commands are run to rebuild it). |
| .TP 0.5i |
| \fB\-v\fR, \fB\-\-version\fR |
| Print the version of the |
| .B make |
| program plus a copyright, a list of authors and a notice that there |
| is no warranty. |
| .TP 0.5i |
| \fB\-w\fR, \fB\-\-print\-directory\fR |
| Print a message containing the working directory |
| before and after other processing. |
| This may be useful for tracking down errors from complicated nests of |
| recursive |
| .B make |
| commands. |
| .TP 0.5i |
| .B \-\-no\-print\-directory |
| Turn off |
| .BR \-w , |
| even if it was turned on implicitly. |
| .TP 0.5i |
| \fB\-W\fR \fIfile\fR, \fB\-\-what\-if\fR=\fIfile\fR, \fB\-\-new\-file\fR=\fIfile\fR, \fB\-\-assume\-new\fR=\fIfile\fR |
| Pretend that the target |
| .I file |
| has just been modified. |
| When used with the |
| .B \-n |
| flag, this shows you what would happen if you were to modify that file. |
| Without |
| .BR \-n , |
| it is almost the same as running a |
| .I touch |
| command on the given file before running |
| .BR make , |
| except that the modification time is changed only in the imagination of |
| .BR make . |
| .TP 0.5i |
| .B \-\-warn\-undefined\-variables |
| Warn when an undefined variable is referenced. |
| .SH "EXIT STATUS" |
| GNU |
| .B make |
| exits with a status of zero if all makefiles were successfully parsed |
| and no targets that were built failed. A status of one will be returned |
| if the |
| .B \-q |
| flag was used and |
| .B make |
| determines that a target needs to be rebuilt. A status of two will be |
| returned if any errors were encountered. |
| .SH "SEE ALSO" |
| The full documentation for |
| .B make |
| is maintained as a Texinfo manual. If the |
| .B info |
| and |
| .B make |
| programs are properly installed at your site, the command |
| .IP |
| .B info make |
| .PP |
| should give you access to the complete manual. |
| .SH BUGS |
| See the chapter ``Problems and Bugs'' in |
| .IR "The GNU Make Manual" . |
| .SH AUTHOR |
| This manual page contributed by Dennis Morse of Stanford University. |
| Further updates contributed by Mike Frysinger. It has been reworked by Roland |
| McGrath. Maintained by Paul Smith. |
| .SH "COPYRIGHT" |
| Copyright \(co 1992-1993, 1996-2016 Free Software Foundation, Inc. |
| This file is part of |
| .IR "GNU make" . |
| .LP |
| GNU Make is free software; you can redistribute it and/or modify it under the |
| terms of the GNU General Public License as published by the Free Software |
| Foundation; either version 3 of the License, or (at your option) any later |
| version. |
| .LP |
| GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
| .LP |
| You should have received a copy of the GNU General Public License along with |
| this program. If not, see |
| .IR http://www.gnu.org/licenses/ . |