make is one of UNIX's greatest contributions to software development. Even the smallest software project typically involves a number of files that depend upon each other in various ways. If you modify one or more source files, you must relink the program after recompiling some, but not necessarily all, of the source code.
make greatly simplifies this process. By recording the relationships between sets of files, make can automatically perform all the necessary updating.
For large projects make becomes even more critical. The main features that a makefile provides for large projects are:
- Automatic compilation of the project applications;
- Choice of multiple targets and environments;
- Good portability across OS platform and compilers;
- A simple language to express target-source dependences;
- Hierarchical approach;
- Automatic run of multistep applications.
Different variants of the makefile utilities are available. While most of these applications have many common features, the differences are minor compared with the differences which exist between OS command shells (MS batch files are very different from UNIX shell scripts). In this presentation the common feature between MS nmake and GNU make will be exploited to build crossplatform and cross compiler project applications.
Note: Lucent also has a development tool called nmake. The Microsoft nmake has no relation to the Lucent nmake and these two tools should not be confused. Do not expect a Lucent nmake Makefile to work with Microsoft's nmake, or vice versa.