Make

Утилита предназначенная для автоматизации преобразования файлов из одной формы в другую. Правила преобразования задаются в скрипте с именем Makefile, который должен находиться в корне рабочей директории проекта. Сам скрипт состоит из набора правил, которые в свою очередь описываются:

  1. целями (то, что данное правило делает);

  2. реквизитами (то, что необходимо для выполнения правила и получения целей);

  3. командами (выполняющими данные преобразования).

В общем виде синтаксис makefile можно представить так:

# Каждой команде должен предшествовать отступ
<цели>: <реквизиты>
    <команда 1>
    ...
    <команда n>

Простейший Makefile

# Каждой команде должен предшествовать отступ
hello_make: main.c
    clang -o hello_make main.c

Запуск:

> make hello_make

Более сложный makefile, позволяющий собрать программу, очистить рабочий каталог, используя для этого стандартные make цели. Для того чтобы make не искал файлы с такими именами, их следует определить в Makefile, при помощи директивы .PHONY. Далее показан пример Makefile с целями all, clean:

TARGET = hello_make
.PHONY: all clean
all: $(TARGET)
clean:
    rm -rf $(TARGET) *.o
main.o: main.c
    gcc -c -o main.o main.c
hello.o: hello.c
    gcc -c -o hello.o hello.c
$(TARGET): main.o hello.o
    gcc -o $(TARGET) main.o hello.o

Запуск:

> make  # make all
> make clean