Make: Difference between revisions
CSV import |
CSV import |
||
| Line 1: | Line 1: | ||
== Make == | |||
{{ | |||
'''Make''' is a build automation tool that automatically builds executable programs and libraries from source code by reading files called '''Makefiles''', which specify how to derive the target program. It was originally created by [[Stuart Feldman]] in 1976 at [[Bell Labs]]. | |||
== Overview == | |||
Make is a tool that controls the generation of executables and other non-source files of a program from the program's source files. Users can specify dependencies between files and the commands needed to update them. Make is widely used in software development to manage and automate the build process. | |||
=== Makefiles === | |||
A '''Makefile''' is a special file that contains shell commands and directives for Make. It defines a set of tasks to be executed. Makefiles specify how to derive the target program from the source files. They contain rules in the form of: | |||
``` | |||
target: dependencies | |||
\tcommand | |||
``` | |||
- '''[[Target]]''': The file to be generated. | |||
- '''[[Dependencies]]''': Files that the target depends on. | |||
- '''[[Command]]''': The shell command to execute to create or update the target. | |||
=== Basic Concepts === | |||
- '''[[Targets]]''': The files that Make should create or update. | |||
- '''[[Dependencies]]''': Files that are used as input to create the target. | |||
- '''[[Rules]]''': Instructions on how to build the targets. | |||
- '''[[Variables]]''': Used to store values that can be reused in the Makefile. | |||
=== Example === | |||
Here is a simple example of a Makefile: | |||
``` | |||
# This is a comment | |||
all: myprogram | |||
myprogram: main.o utils.o | |||
\tgcc -o myprogram main.o utils.o | |||
main.o: main.c | |||
\tgcc -c main.c | |||
utils.o: utils.c | |||
\tgcc -c utils.c | |||
clean: | |||
\trm -f myprogram main.o utils.o | |||
``` | |||
In this example, `myprogram` is the target, and it depends on `main.o` and `utils.o`. The `clean` target is a common convention to remove all generated files. | |||
== History == | |||
Make was created by Stuart Feldman in 1976 at Bell Labs. It was designed to simplify the process of compiling and linking programs. Over the years, Make has become a standard tool in Unix-based systems and has influenced many other build automation tools. | |||
== Variants == | |||
Several variants of Make exist, including: | |||
- [[GNU Make]]: The most widely used version, which includes many extensions and improvements over the original. | |||
- [[BSD Make]]: The version used in BSD operating systems. | |||
- [[CMake]]: A cross-platform tool that generates Makefiles. | |||
== Also see == | |||
* [[GNU Make]] | |||
* [[CMake]] | |||
* [[Build automation]] | |||
* [[Software development]] | |||
* [[Shell script]] | |||
{{Software development}} | |||
[[Category:Build automation]] | |||
[[Category:Software development tools]] | |||
[[Category:Unix software]] | |||
Latest revision as of 22:33, 15 December 2024
Make[edit]
Make is a build automation tool that automatically builds executable programs and libraries from source code by reading files called Makefiles, which specify how to derive the target program. It was originally created by Stuart Feldman in 1976 at Bell Labs.
Overview[edit]
Make is a tool that controls the generation of executables and other non-source files of a program from the program's source files. Users can specify dependencies between files and the commands needed to update them. Make is widely used in software development to manage and automate the build process.
Makefiles[edit]
A Makefile is a special file that contains shell commands and directives for Make. It defines a set of tasks to be executed. Makefiles specify how to derive the target program from the source files. They contain rules in the form of:
``` target: dependencies \tcommand ```
- Target: The file to be generated. - Dependencies: Files that the target depends on. - Command: The shell command to execute to create or update the target.
Basic Concepts[edit]
- Targets: The files that Make should create or update. - Dependencies: Files that are used as input to create the target. - Rules: Instructions on how to build the targets. - Variables: Used to store values that can be reused in the Makefile.
Example[edit]
Here is a simple example of a Makefile:
```
- This is a comment
all: myprogram
myprogram: main.o utils.o \tgcc -o myprogram main.o utils.o
main.o: main.c \tgcc -c main.c
utils.o: utils.c \tgcc -c utils.c
clean: \trm -f myprogram main.o utils.o ```
In this example, `myprogram` is the target, and it depends on `main.o` and `utils.o`. The `clean` target is a common convention to remove all generated files.
History[edit]
Make was created by Stuart Feldman in 1976 at Bell Labs. It was designed to simplify the process of compiling and linking programs. Over the years, Make has become a standard tool in Unix-based systems and has influenced many other build automation tools.
Variants[edit]
Several variants of Make exist, including:
- GNU Make: The most widely used version, which includes many extensions and improvements over the original. - BSD Make: The version used in BSD operating systems. - CMake: A cross-platform tool that generates Makefiles.
Also see[edit]
| Software development |
|---|
|
|