Các GNU make manual nóikhi nhiều quy tắc mẫu phù hợp với một mục tiêu
Có thể là nhiều hơn một quy tắc mẫu sẽ đáp ứng các tiêu chí này. Trong trường hợp đó, thực hiện sẽ chọn quy tắc với thân ngắn nhất (có nghĩa là, mẫu phù hợp nhất).
Vì vậy, nó làm tôi ngạc nhiên rằng:
$ touch make_specific.cpp
$ cat Makefile.general_first
%.o: %.cpp
@echo using general rule
$(CXX) -c $< -o [email protected]
%_specific.o: %_specific.cpp
@echo using specific rule
$(CXX) -c $< -o [email protected]
$ make -B -f Makefile.general_first make_specific.o
using general rule
g++44 -c make_specific.cpp -o make_specific.o
Nhiều quy mô phù hợp với mục tiêu, và kể từ gốc cho %_specific.o : %_specific.cpp
quy tắc ('make' trong trường hợp này) là ngắn hơn thân cho %.o : %.cpp
quy tắc, tôi dự kiến quy tắc cụ thể sẽ được chọn, nhưng không phải.
Tôi đang thiếu gì?
Cảm ơn. Tôi đang sử dụng 3,81, do đó rất có thể là nguyên nhân. Đang chờ hệ thống quản trị cài đặt 3.82 để xác minh. –
Có cách nào để đạt được điều này với clearmake thay vì GNU thực hiện? Tôi không thể tìm thấy bất kỳ thông tin nào về lựa chọn quy tắc mẫu trong xóa ... – dragonator
Cảm ơn. Tôi đã gãi đầu cố gắng hiểu tại sao điều này lại xảy ra. Lỗi của tôi; Tôi chưa bao giờ chú ý đến số phiên bản tôi đã sử dụng :) – Fernando