2013-06-12 20 views
6

Khi sử dụng b uilt-in $(error text) and $(warning text) functions of GNU Make, làm thế nào tôi có thể ngắt dòng vào đầu ra lỗi/cảnh báo mà không có nhào lộn?Làm cách nào để tổng hợp ngắt dòng trong GNU Tạo cảnh báo hoặc lỗi?

By nhào lộn Ý tôi là phương pháp hài hước như hai:

$(warning $(shell /bin/echo -e "something\nfoo\nbar\nbaz")) 
$(warning $(shell /bin/bash -c 'echo -e "something\nfoo\nbar\nbaz"')) 

mà, btw, không làm việc cho tôi với GNU Make 3,81 trên Ubuntu 10.04.

Lý do: Tôi muốn làm cho đầu ra lỗi trong phần điều kiện (ifeq, ifneq) của tôi GNUmakefile dễ đọc hơn.


Cách giải quyết hiện nay đối với tôi là để sử dụng cho mỗi dòng:

$(warning ...) 

và cuối cùng cho dòng cuối cùng:

$(error ...) 
+0

'make' và khoảng trắng không phải là bạn tốt, tôi sợ. –

Trả lời

13

Định nghĩa một biến ngắt dòng sử dụng xác định/endef và sử dụng nó như $ n như thế này:

define n 


endef 

$(warning "something$nfoo$nbar$nbaz") 

Lưu ý hai dòng trống giữa xác định và endef

+0

Cả hai công việc, có lẽ vì nó là một nhân vật duy nhất ?! Cảm ơn, đây chính xác là những gì tôi đang tìm kiếm. – 0xC0000022L

+0

Bạn được chào đón. Nếu nó là nl thay vì n, nó sẽ phải là $ (nl) hoặc $ {nl} để tránh bị coi là $ {n} l. Các tên biến chữ cái đơn không gặp phải vấn đề này trong Gnu. –

+0

yep đã tìm ra. Cảm ơn câu trả lời nhanh chóng. Sẽ chấp nhận ngay sau khi hệ thống cho phép tôi. – 0xC0000022L