Утилита 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