tôi có một loạt các ứng dụng được xây dựng với cùng một loại làm cho quy tắc:Quy tắc mẫu Makefile không có phần mở rộng?
apps = foo bar baz
all: $(apps)
foo: foo.o $(objects)
$(link)
bar: bar.o $(objects)
$(link)
baz: baz.o $(objects)
$(link)
Nếu họ có một phần mở rộng (ví dụ .x
) Tôi có thể làm cho một quy tắc khuôn mẫu như:
%.x: %.o $(objects)
$(link)
và tôi sẽ không phải viết ra một quy tắc mới cho từng ứng dụng.
Nhưng họ không có một phần mở rộng, và tôi khá chắc chắn rằng:
%: %.o $(objects)
$(link)
sẽ không hoạt động (vì nó xác định rằng để xây dựng bất kỳ tập tin mà bạn có thể sử dụng quy tắc này).
Có cách nào để chỉ định một quy tắc sẽ bao gồm tất cả các quy tắc xây dựng $(apps)
?
Tôi không chắc chắn tôi hiểu, bạn có nói rằng câu trả lời từ [Beta] (http://stackoverflow.com/a/15718701/1131467) không chính xác? –
không, tôi đã không nói điều đó! , cả hai câu trả lời được đăng đều đúng về lý thuyết - thực ra tôi đã thử cùng một điều.Làm cho các quy tắc mẫu tĩnh là lựa chọn hiển nhiên cho những tình huống này ..... nhưng cố gắng làm cho chúng quá chung chung không hiệu quả. Tôi chỉ đăng sự quan sát của tôi mà dường như hợp lý với tôi, chỉ để cho bạn biết. – nsd