Encyclopedia > Makefile

  Article Content

Make

Redirected from Makefile

Table of contents

Definition and Modern Usage

make Make is a computer program to help to compile needed files automatically by parsing[?] a make file and dealing with a program's[[dependencies|dependency]. Other installation and configuration methods are used for programs without dependencies.

Although this is its most typical use, Make is also used in other programs as a way of defining what has changed, and thus triggering appropriate responses within the program. Other versions of Make

 cmake is a []portable]] makefile utility. It requires the Cmake lists file to be present and does not seem at present to support the diving makefile[?] concept. You must specify the path.. even if it is the current directory

ex: cmake [space] . to specify the current directory.

See "Obtaining Make"

Makefile utilities are frequently used to handle the compilation and/or installation of large pieces of software. Make reads the makefile at current working directory by default[?], which is a common practice among computer programmers.

It can be used to compile only certain subsets of an item or suite of software, and can account for dependencies between various parts of the software. Its input is a list of specifications (usually known as a makefile) describing dependency relationships between the generation of files and programs. Make has its roots in Unix. Since it is old, many derived tools have appeared that work better. Among these are BSD make, GNU make and A-A-P.

makefile is a text file on the computer that states how to build executable computer programs or many other files according to given dependency. Make program runs it.

The file commonly is maintained in the base directory of a project during the development process. This file lists all of the files in the project and describes the action that needed to be taken on that file to create it or bring it up to date. The Makefile is used by the command 'make'. The 'make' program has some intelligence built in and will not attempt to re-make files that are not out of date. For example it will typically not recompile source that has not changed since its last compile (determined by comparison of dates of files).

A Makefile consists of commands like this:

foo.o: foo.c foo.h bar.h
       gcc -o foo.o foo.c

logobig.ppm: logo.pov
       $(POVRAY) logo.pov -k0 -o logobig.ppm
The first command means that if foo.c, foo.h, or bar.h is newer than foo.o, then foo.o should be remade by running gcc. foo.o is said to depend on foo.c, foo.h, and bar.h. The second says that logobig.ppm depends on logo.pov and can be made by running POV-Ray.

Most Makefiles are used to compile programs, but they can be used in any situation where files are made from one another by programs that can be called from the command line.

A sample makefile

 # Specify compiler
 CC      = g++

 # Specify compiler options
 CFLAGS  = -g 
 LDFLAGS = -L/usr/openwin/lib
 LDLIBS  = -lX11 -lXext

 # Needed to recognize .cpp as a file suffix
 .SUFFIXES: $(SUFFIXES) .cpp

 # Executable name
 PROG  = life 

 # List of object file needed for the final program
 OBJS  = main.o window.o Board.o Life.o BoundedBoard.o
 
 all: $(PROG)

 # Program compilation and linking steps
 $(PROG): $(OBJS)
      $(CC) $(CFLAGS) $(LDFLAGS) $(LDLIBS) -o $(PROG) $(OBJS)

 .cpp.o:
      $(CC) $(CFLAGS) -c $*.cpp
Obtaining Make GNU/Linux users should utilize the directory at http://www.gnu.org/directory/. Cygwin users should consult their administrator for more information. Individual users without an administrator should consult the Cygwin package search on the cygwin website at www.cygwin.com.



All Wikipedia text is available under the terms of the GNU Free Documentation License

 
  Search Encyclopedia

Search over one million articles, find something about almost anything!
 
 
  
  Featured Article
French resistance

... became a de facto leader of Free French Forces. Various groups organized in both occupied and unoccupied France. Many of them were former soldiers that had escaped ...

 
 
 
This page was created in 40.2 ms