FreeBSDwiki:Make
From Ubuntuwiki.net
make is, to quote the GNU make page,
Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files. Make gets its knowledge of how to build your program from a file called the makefile, which lists each of the non-source files and how to compute it from other files. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program.
Which roughly means that it helps you compile stuff easily, if the proper makefile has been created. The directories in ports all have at least one thing in common: they all have a makefile that helps the building and installation of the port. A makefile will have "targets" which tell make to do different things depending on what target you specify. For example, running
make
by itself runs the makefile's build options, running
make install
will run the make command against the "install" target in the makefile and do what it says, which is usually installing the port and registering it against the FreeBSD package database, and running
make clean
will run it through the "clean" target in the makefile, which normally does cleanup stuff (like emptying out the particular port's "workdir", where temporary files are put during the compile and install of the port.)
Some ports will present a screen containing various optional components that can be selected (or deselected) when make is run. A good example of such a port is Samba that presents options to add support for LDAP, Active Directory, CUPS, WINBIND, ACLs as well as other Samba specific features. Once the options have been selected the choices are noted into a file that make continues to use during compiling. Running make again later will use these saved settings and not bring up the configuration screen. To force the option screen to display run either
make config
or to remove the saved configuration altogether (and thereby revert to the default options) run
make rmconfig make
Thanks in no small part to the makefile (and the FreeBSD maintainers who take care of the ports tree) make is usually "smart" enough to know that when you type in
make install clean
all in one go, you're really asking to do
make make install make clean
which is functionally the same as
make && make install && make clean
FreeBSD's use of make can be customized further by putting the make.conf file to good use.
See the GNU make page for more info.