Make - GNU Project - Free Software Foundation (2025)

GNU Make

GNU Make is a tool which controls the generation of executables and othernon-source files of a program from the program's source files.

Make gets its knowledge of how to build your program from a filecalled the makefile, which lists each of the non-source filesand how to compute it from other files. When you write a program, youshould write a makefile for it, so that it is possible to use Make tobuild and install the program.

Capabilities of Make

  • Make enables the end user to build and install your packagewithout knowing the details of how that is done -- because thesedetails are recorded in the makefile that you supply.
  • Make figures out automatically which files it needs to update,based on which source files have changed. It also automaticallydetermines the proper order for updating files, in case one non-sourcefile depends on another non-source file.

    As a result, if you change a few source files and then run Make, itdoes not need to recompile all of your program. It updates only thosenon-source files that depend directly or indirectly on the sourcefiles that you changed.

  • Make is not limited to any particular language. For eachnon-source file in the program, the makefile specifies the shellcommands to compute it. These shell commands can run a compiler toproduce an object file, the linker to produce an executable,ar to update a library, or TeX or Makeinfo to formatdocumentation.
  • Make is not limited to building a package. You can also use Maketo control installing or deinstalling a package, generate tags tables forit, or anything else you want to do often enough to make it worthwhile writing down how to do it.

Table of contents

  • Download
  • Documentation
  • Mailing lists
  • Getting involved
  • Licensing

Make Rules and Targets

A rule in the makefile tells Make how to execute a series ofcommands in order to build a target file from source files.It also specifies a list of dependencies of the target file.This list should include all files (whether source files or other targets)which are used as inputs to the commands in the rule.

Here is what a simple rule looks like:

target: dependencies ... commands ...

When you run Make, you can specify particular targets to update;otherwise, Make updates the first target listed in the makefile. Ofcourse, any other target files needed as input for generating thesetargets must be updated first.

Make uses the makefile to figure out which target files ought to bebrought up to date, and then determines which of them actually need tobe updated. If a target file is newer than all of its dependencies,then it is already up to date, and it does not need to be regenerated.The other target files do need to be updated, but in the right order:each target file must be regenerated before it is used in regeneratingother targets.

Advantages of GNU Make

GNU Make has many powerful features for use in makefiles, beyond whatother Make versions have. It can also regenerate, use, and then deleteintermediate files which need not be saved.

GNU Make also has a few simple features that are very convenient. Forexample, the -o file option which says ``pretend thatsource file file has not changed, even though it has changed.''This is extremely useful when you add a new macro to a header file.Most versions of Make will assume they must therefore recompile all thesource files that use the header file; but GNU Make gives you a way toavoid the recompilation, in the case where you know your change to theheader file does not require it.

However, the most important difference between GNU Make and mostversions of Make is that GNU Make is free software.

Makefiles And Conventions

We have developed conventions for how to write Makefiles, which allGNU packages ought to follow. It is a good idea to follow theseconventions in your program even if you don't intend it to be GNUsoftware, so that users will be able to build your package justlike many other packages, and will not need to learn anything specialbefore doing so.

These conventions are found in the chapter``Makefile conventions'' (147 kcharacters) of the GNU CodingStandards (147 k characters).

Download

Makecan be found on the main GNU ftp server(download Make via HTTPS,download Make via HTTP ordownload Make via FTP), and itsmirrors; pleaseuse a mirrorif possible.

Documentation

Documentation forMakeis online, as is documentation for mostGNU software. It can also be accessed by runninginfomake ormanmake, or by looking at/usr/share/doc/make/,or similar directories on your system. A brief summary is available byrunning make--help.

Mailing lists

Makehas the following mailing lists:

  • bug-make for discussing most aspects of Make, including development and enhancement requests, as well as bug reports.
  • help-make for general user help and discussion.

Announcements aboutMakeand most other GNU software are made on theinfo-gnumailing list(archives).

Security reports that should not be made immediately public can besent directly to the maintainer. If there is no response to an urgentissue, you can escalate to the generalsecuritymailing list for advice.

Getting involved

Development ofMake,and GNU in general, is a volunteer effort, and you can contribute. Forinformation, please read How to help GNU. If you'dlike to get involved, it's a good idea to join the discussion mailinglist (see above).

Development tools
For development sources, issue trackers, and otherinformation, please see theMakeproject pageat savannah.gnu.org.
Testing
Trying the latest test release (when available) is alwaysappreciated. Test releases can be found on the GNU “alpha”server(HTTPS,HTTP,FTP) and itsmirrors.
Translating
To translate the program messages into other languages, please referto the Translation Project page forMake.New translations or updates to the existing strings will not beincorporated intoMakeif they are sent elsewhere. For more information, see the TranslationProject home page.
Maintainer
Makeis currently maintained byPaul Smith.Please use the mailing lists for contact.

Licensing

Makeis free software; you can redistribute it and/or modify it under theterms of the GNU GeneralPublic License as published by the Free Software Foundation; eitherversion3 of the License, or (at your option) any later version.

Make
- GNU Project - Free Software Foundation (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Arielle Torp

Last Updated:

Views: 6302

Rating: 4 / 5 (41 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Arielle Torp

Birthday: 1997-09-20

Address: 87313 Erdman Vista, North Dustinborough, WA 37563

Phone: +97216742823598

Job: Central Technology Officer

Hobby: Taekwondo, Macrame, Foreign language learning, Kite flying, Cooking, Skiing, Computer programming

Introduction: My name is Arielle Torp, I am a comfortable, kind, zealous, lovely, jolly, colorful, adventurous person who loves writing and wants to share my knowledge and understanding with you.