Xác định quy tắc hậu tố tùy chỉnh trong Makefile

Makecó thể tự động tạo tệp ao, sử dụng cc -c trên tệp .c tương ứng. Các quy tắc này được tích hợp sẵn trongmake, và bạn có thể tận dụng lợi thế này để rút gọn Makefile của mình. Nếu bạn chỉ cho biết các tệp .h trong dòng phụ thuộc của Makefile mà mục tiêu hiện tại phụ thuộc vào,makesẽ biết rằng tệp .cfile tương ứng đã được yêu cầu. Bạn không phải bao gồm lệnh cho trình biên dịch.

Điều này làm giảm Makefile hơn nữa, như hình dưới đây -

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

Makesử dụng một đích đặc biệt, có tên .SUFFIXES để cho phép bạn xác định các hậu tố của riêng mình. Ví dụ: hãy tham khảo dòng phụ thuộc được đưa ra bên dưới:

.SUFFIXES: .foo .bar

Nó thông báo make rằng bạn sẽ sử dụng các hậu tố đặc biệt này để đưa ra các quy tắc của riêng mình.

Tương tự như cách makeđã biết cách tạo tệp .o từ tệp .c , bạn có thể xác định các quy tắc theo cách sau:

.foo.bar:
   tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]' < $< > $@
.c.o:
   $(CC) $(CFLAGS) -c $<

Quy tắc đầu tiên cho phép bạn tạo tệp .bar từ tệp .foo . Về cơ bản nó xáo trộn tệp. Quy tắc thứ hai là quy tắc mặc định được sử dụng bởimakeđể tạo tệp .o từ tệp .c .