Make может автоматически создать файл, используя cc -c для соответствующего файла .c. Эти правила встроены в make , и вы можете воспользоваться этим преимуществом, чтобы сократить ваш Makefile. Если вы укажете только файлы .h в строке зависимостей файла Makefile, от которого зависит текущая цель, make узнает, что соответствующий файл .cfile уже требуется. Вам не нужно включать команду для компилятора.
Это еще больше уменьшает Makefile, как показано ниже —
OBJECTS = main.o hello.o factorial.o hello: $(OBJECTS) cc $(OBJECTS) -o hello hellp.o: functions.h main.o: functions.h factorial.o: functions.h
Make использует специальную цель с именем .SUFFIXES, которая позволяет вам определять свои собственные суффиксы. Например, обратитесь к строке зависимости, приведенной ниже —
.SUFFIXES: .foo .bar
Он сообщает make, что вы будете использовать эти специальные суффиксы для создания своих собственных правил.
Подобно тому, как make уже знает, как сделать файл .o из файла .c , вы можете определить правила следующим образом:
.foo.bar: tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]' < $< > $@ .c.o: $(CC) $(CFLAGS) -c $<
Первое правило позволяет вам создать файл .bar из файла .foo . Это в основном шифрует файл. Второе правило — это правило по умолчанию, используемое make для создания файла .o из файла .c .