Tôi đã viết một Makefile thực hiện một số thế hệ phụ thuộc và tôi thấy mình phải lặp lại quy tắc vì codebase (cũ) chứa hỗn hợp các tệp .cpp
và .cc
. Có vẻ hơi khó coi. Có cách nào để chỉ định rằng các điều kiện tiên quyết của một mục tiêu có thể là các tệp .cpp
hoặc .cc
?Tránh sao chép GNU Thực hiện quy tắc
Vì vậy, thay vì phải:
%.d : %.cpp
$(CPP) -MM $(CPPFLAGS) $<
%.d : %.cc
$(CPP) -MM $(CPPFLAGS) $<
Tạo một cái gì đó mà không có sự trùng lặp như:
%.d : %.(cpp | cc)
$(CPP) -MM $(CPPFLAGS) $<
Hoặc là dư thừa này được thực thi chỉ là một yếu tố không may của GNU Make của thiết kế?
nếu bạn sử dụng GNU autotools bạn có thể có thể sử dụng macro m4 – Kevin