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 được xác định bởi các tab ...... và Không gian 4 không tạo tab, chỉ một tab tạo 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 với^I và kết thúc dòng với $ cả hai đều quan trọng để đảm bảo rằng phụ thuộc nào hết đúng cách 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 được với tiện ích làm cho .....
ví 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 [email protected] $<$
## the ^I above means a tab was there before the action part, so this lines 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
hy vọng điều này sẽ giúp ích !!
Bạn có thể sử dụng .RECIPEPREFIX để thay đổi cách sử dụng ký tự. Xem: https://www.gnu.org/software/make/manual/html_node/Special-Variables.html#Special-Variables – aseq
Cách này không được đóng dưới dạng trùng lặp ??? Có thể trùng lặp của [Làm lỗi: thiếu dấu tách] (https://stackoverflow.com/questions/920413/make-error-missing-separator) – jww