Перейти к основному содержимому

Утилита make

Описание утилиты

Для более грамотной работы с проектами существуют сценарии, работа с которыми осуществляется в утилите Make.

Make — это утилита, предназначенная для сборки проектов, автоматически определяющая, какие части большой программы должны быть перекомпилированы, и выполняет необходимые для этого действия.

Утилита Make работает с файлами сценариев, в которых описывается, какие цели ставятся при сборке проекта, а также то, каким путём этих целей добиваться.

Чтобы использовать Make следует набрать одноимённую команду в командной строке. Так как данная команда расположена в комплекте MinGW в виде исполняемого файла mingw32-make.exe, то для ее использования иследует набирать команду mingw32-make. В качестве параметра к данной команде используется обычно имя файла сценария и при этом перед именем данного файла используется ключ -f. Но если назвать файл сценария Makefile или makefile, то никаких ключей и параметров не потребуется, так как это имя файла сценария по умолчанию для make.

В файле сценария обязательно должно присутствовать хотя бы одно правило.

Правило состоит из цели, зависимостей или пререквизитов, обязательных для достижения цели, а также одной или нескольких команд, которые для достижения данной цели будут выполняться.

Команды перечисляются каждая с новой строки. Перед каждой такой командой обязательно используется табуляция. Без этого сценарий работать не будет.

В качестве команд используются обычные команды оболочки Shell. Все используемые команды будут выводиться в командной строке. Если нужно отключить вывод команд на консоли, то перед командой ставится символ '@'.

Когда запускается утилита make с командной строки, то помимо имени файла с ключом можно указать имя цели, которую выполнить в сценарии. Если не ввести имя цели, то выполнится либо цель с именем all либо самая первая в файле сценария цель.

В качестве пререквизитов (зависимостей) как правило используются другие цели, представляющие собой, как правило, имена файлов.

Стандартные цели для сборки дистрибутивов GNU:

  • all — выполнить компиляцию пакета (цель по умолчанию)
  • install — установить пакет из дистрибутива (производит копирование исполняемых файлов, библиотек и документации в системные директории)
  • uninstall — удалить пакет (производит удаление исполняемых файлов и библиотек из системных директорий)
  • clean — очистить дистрибутив (удалить из дистрибутива объектные и исполняемые файлы созданные в процессе компиляции)
  • distclean — очистить все созданные при компиляции файлы и все вспомогательные файлы созданные утилитой ./configure в процессе настройки параметров компиляции дистрибутива

Пример файла Makefile для кода из статьи Многомодульные программы:

all: prog
prog: main.o bank_account.o
gcc -o prog main.o bank_account.o
main.o: main.c bank_account.h
gcc -c -o main.o main.c
tbank_account.o: bank_account.c
gcc -c -o bank_account.o bank_account.c
clean:
rm -rf *.o prog

Самостоятельная работа

Собрать самостоятельную работу из статьи Многомодульные программы при помощи утилиты make