Sự cố với hàm dep2 trong mã mẫu dưới đây là gì?Xác định các chức năng tùy chỉnh của GNU
dep1 = $(eval makefile_list_$1 := $(MAKEFILE_LIST))$(eval -include $1.mk)$(eval MAKEFILE_LIST := $(makefile_list_$1))
define dep2
$(eval makefile_list_$1 := $(MAKEFILE_LIST))
$(eval -include $1.mk)
$(eval MAKEFILE_LIST := $(makefile_list_$1))
endef
$(call dep1,test)
$(call dep2,test)
.DEFAULT_TARGET: all
.PHONY: all
all:
@echo [email protected]
GNU tạo 3.81 và 3.82 sản xuất Makefile:10: *** missing separator. Stop.
trỏ đến lệnh dep2, dep1 chạy không có lỗi. Sự khác biệt duy nhất giữa hai biến thể là các dòng mới trong dep2 (và toàn bộ lý do tại sao tôi muốn sử dụng định nghĩa).
Không, '=' là tùy chọn (và chỉ được giới thiệu với GNU tạo thành 3,82). Thêm nó không tạo sự khác biệt. –
@ g.b .: Bạn có thực sự thử không? Tôi đã làm (với GNU làm cho 3,81), và nó đã làm cho một sự khác biệt. Nó hoạt động như mong đợi đối với tôi, nếu tôi thêm '='. – eriktous
@eriktous: Có, tôi đã thử với 3.82. Các phiên bản cũ hơn sẽ hoàn toàn bỏ qua câu lệnh define nếu nó được theo sau bởi '=', đó là lý do tại sao bạn không nhận được thông báo lỗi. –