Система сборки, используемая в проекте гну для языка си и си-подобных.
- Собирает программу при помощи например GCC
- Установка зависимостей
- Запоминание установок сборки
- Не будет собирать уже собранное
Нотация:
target [target ...]: [component ...] [command 1] # ^ компоненты = зависимости . . . [command 2]
Зависимости:
all: program1 # ^ если запущен просто make, то запускает программы из all # v зависимости v program1: objectFile.o obj2.o gcc *.o -o program1 # Linking only objectFile.o: objectFile.c gcc -c objectFile.c -o objectFile.c # Compile only obj2.o: obj2.c gcc -c obj2.c -o obj2.c # Compile only hello: ; @echo "Hello# "
Особые команды: (-) Игнорировать ошибки (@) Не выводить в стандартный порт вывода (+) Выполнить даже если make не в режиме выполнения
Макросы/переменные
MACRO1 = 42 COMPILE = gcc *.c gcc: $(COMPILE)