Tiêu chí: Makefile là một GNU Tạo Makefile - Tôi không quan tâm đến makepp, qmake, cmake, v.v. cmake), nhưng điều này là dành cho công việc và tại nơi làm việc, chúng tôi sử dụng GNU Make. Giải pháp tối ưu là một giải pháp Makefile thuần túy hơn là một kịch bản lệnh vỏ mà các phân tích cú pháp tạo ra cho bạn.GNU Makefile tương đương với lệnh 'TRAP' của trình bao để nhận biết ngắn gọn về lỗi xây dựng khi thoát
Tôi cũng không muốn thực hiện giải pháp 'tiếp tục thất bại' - nếu nó bị hỏng, nó bị hỏng và cần được sửa. Tình hình là điều này, tôi đã có một makefile mà xây dựng một số thư mục song song - nếu một trong số họ không thành công, tất nhiên xây dựng toàn bộ không thành công, nhưng không phải cho đến khi tất cả chạy làm cho chạy đến hoàn thành (hoặc thất bại). Quay trở lại Điều này có nghĩa là lý do tại sao làm cho thực sự thất bại được chôn cất ở đâu đó một cách tùy tiện xa từ đầu ra của sản phẩm.
Dưới đây là một ví dụ về những gì tôi đã có:
all: $(SUBDIRS)
SUBDIRS = \
apple \
orange \
banana \
pineapple \
lemon \
watermelon \
grapefruit
$(SUBDIRS):
cd [email protected] && $(MAKE) $(MFLAGS) 2>&1 | sed -e "s/^/$(notdir $(@)): /g"
Nếu tôi chạy 'làm -j 5' và 'da cam' sẽ xảy ra thất bại - Tôi muốn thấy một bảng như thế này tại cuối của quá trình làm
apple - passed
orange - FAILED
banana - passed
pineapple - passed
lemon - passed
tôi đã coi là một & & echo "thông qua"> .result || echo "FAILED"> .result, nhưng vẫn cần một số lệnh TRAP hoặc __onexit() để in chúng khi thoát.
Bất kỳ Makefile ninja nào có giải pháp thuần túy cho mục đích này?
không chỉnh sửa - giải pháp của tôi không thực sự hoạt động theo cách tôi đã hy vọng .. STYMIED!
"nếu một trong số họ thất bại, tất nhiên toàn bộ xây dựng thất bại, nhưng không phải cho đến khi tất cả các hoạt động làm cho chạy đến khi kết thúc (hoặc thất bại)." Bạn có thể cải thiện tình huống đó bằng cách thêm vào trước 'pipet; set -o; 'để' $ (SUBDIRS) 'lệnh, do đó, mã thoát nonzero của một thất bại' $ (MAKE) 'không còn bị ẩn bởi lối ra thành công của' sed'. – slowdog
Nếu 'cam' thất bại, bạn muốn nó tiếp tục với cam, chuối, v.v ...? – Beta
@slowdog - Mã thoát của việc tạo ra không nhất thiết phải là vấn đề, nhưng đó là một điểm tốt, +1 cho bạn – synthesizerpatel