Книга: Основы программирования в Linux

Встроенные правила

Встроенные правила

До сих пор вы описывали в make-файле подробно, как выполнять каждый шаг. В действительности у команды make есть много встроенных правил, которые существенно упрощают make-файлы, особенно если у вас много исходных файлов. Для того чтобы проверить это, создайте традиционную программу, приветствующую мир:

#include <stdlib.h>
#include <stdio.h>
int main() {
 printf("Hello Worldn");
 exit(EXIT_SUCCESS);
}

He задавая make-файла, попробуйте откомпилировать ее с помощью команды make:

$ make foo
сс foo.с -о foo
$

Как видите, make знает, как запустить компилятор, хотя в данном случае она выбирает сс вместо gcc (в ОС Linux это нормально, потому что cc — обычно ссылка на gcc). Иногда эти встроенные правила называют подразумеваемыми правилами. Стандартные правила используют макросы, поэтому задавая некоторые новые значения для макросов, вы можете изменить стандартное поведение.

$ rm foo
$ make CC=gcc CFLAGS="-Wall -g" foo
gcc -Wall -g foo.с -o foo
$

С помощью опции -p можно попросить команду make вывести на экран встроенные правила. Их так много, что мы не можем привести в книге все встроенные правила, ограничимся коротким фрагментом вывода команды make -p версии GNU, демонстрирующим часть этих правил:

OUTPUT_OPTION = -o $@
COMPILE.с = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -с
%.о: %.с
# commands to execute (built-in) :
 $(COMPILE.с) $(OUTPUT_OPTION) $<

Теперь, принимая во внимание описанные встроенные правила, вы можете упростить ваш make-файл, удалив правила для создания объектных файлов и оставив только зависимости, таким образом, соответствующая секция make-файла читается просто:

main.о: main.c a.h
2.о: 2.с a.h b.h
3.o: 3.c b.h c.h

Эту версию можно найти в загружаемом из Интернета программном коде, в файле Makefile4.

Оглавление книги


Генерация: 1.131. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз