Keywords: make+, make, automake, autoconf, rpm, deb, dpkg, package

Installing
Prev | Chapter 3. Compiling a package which has been converted to use make+ | Next

## Installing

The application's `Makefile+` file contains an ordinary `install` target which is run directly when the user does make+ install. The purpose of the `install` target is to do whatever is necessary to install the program, but in practice this means doing two things:

- Making the installation directories.

- Copying the program into the installation directories.

Here is an example `install` target. The first four commands are concerned with creating the installation directories. The last five commands are concerned with copying the built program (in this case, a library) to the installation directories. Notice the use of several make+ macros.

    install:
            install -d $(DESTDIR)$(libdir)
            install -d $(DESTDIR)$(pkgincludedir)
            install -d $(DESTDIR)$(man3dir)
            install -d $(DESTDIR)$(datadir)/rws/symtabs/

            $(MP_INSTALL_STATIC_LIB) libc2lib.a
            $(MP_INSTALL_DYNAMIC_LIB) libc2lib.so
            install -m 0644 $(HEADERS) $(DESTDIR)$(pkgincludedir)
            install -m 0644 *.3        $(DESTDIR)$(man3dir)
            install -m 0644 *.syms     $(DESTDIR)$(datadir)/rws/symtabs/

`$(DESTDIR)` must be prefixed onto every install path. Normally it is empty, and so has no effect. However when doing packaged builds (building RPMs for example) it can be used to create a "fake root".

`$(libdir)`, etc., are standard paths for particular directories. For example if the prefix is `/usr/local` and we are building on Linux, then `$(libdir)` will expand to `/usr/local/lib` and `$(man3dir)` to `/usr/local/share/man/man3`.

Prev | Up | Next
Compiling and testing | Home | Chapter 4. Converting a package to use make+