makefile có mối quan hệ rất ngu ngốc với các tab, tất cả các hành động của mọi quy tắc đều được xác định bởi các tab. Và không, 4 khoảng trắng không tạo một tab, chỉ một tab tạo một tab.
để kiểm tra tôi sử dụng lệnh cat -e -t -v makefile_name
Nó cho thấy sự hiện diện của các tab có ^I
và kết thúc dòng với $
cả hai đều rất quan trọng để đảm bảo rằng các phụ thuộc kết thúc đúng và các tab đánh dấu hành động cho các quy tắc để chúng có thể dễ dàng nhận dạng đối với tiện ích tạo.
Thí dụ:
Kaizen ~/so_test $ cat -e -t -v mk.t
all:ll$ ## here the $ is end of line ...
$
ll:ll.c $
^Igcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<$
## the ^I above means a tab was there before the action part, so this line is ok .
$
clean :$
\rm -fr ll$
## see here there is no ^I which means , tab is not present ....
## in this case you need to open the file again and edit/ensure a tab
## starts the action part