@, - và + làm gì làm tiền tố cho các dòng công thức trong Make?


172

Trong hướng dẫn sử dụng GNU Makefile, nó đề cập đến các tiền tố này.

Nếu .ONESHELL được cung cấp, thì chỉ dòng đầu tiên của công thức sẽ được kiểm tra cho các ký tự tiền tố đặc biệt ('@', '-' và '+').

Những tiền tố này làm gì, và chúng được đề cập ở đâu?

Câu trả lời:


234

Chúng kiểm soát hành vi tạo các dòng lệnh được gắn thẻ:

  • @ triệt tiêu 'tiếng vang' thông thường của lệnh được thực thi.

  • - có nghĩa là bỏ qua trạng thái thoát của lệnh được thực thi (thông thường, trạng thái thoát khác không sẽ dừng phần đó của bản dựng).

  • +có nghĩa là 'thực thi lệnh này trong make -n' (hoặc 'make -t' hoặc 'make -q') khi các lệnh không được thực thi bình thường. Xem thêm thông số kỹ thuật POSIX cho makevà cả §9.3 của hướng dẫn GNU Make.

Các +ký hiệu là (POSIX-chuẩn) tổng quát của de facto cơ chế (không chuẩn) theo đó một dòng lệnh có chứa ${MAKE}hoặc $(MAKE)được thực hiện dưới make -n.

( @được thảo luận trong §5.2 của hướng dẫn GNU Make; -được mô tả trong §5.5 ; và §5.7.1 đề cập đến việc sử dụng +.)


41

@ngăn dòng lệnh vang vọng ra bàn điều khiển. Bạn có thể làm điều đó trên toàn cầu với -shoặc--keep-silent

-nói làm cho tiếp tục đi, ngay cả khi lệnh thất bại vì một số lý do. Bạn có thể làm điều đó trên toàn cầu thông qua -icờ (hoặc --ignore-errors).

+Tôi không quen thuộc trước khi bạn hỏi. Khi gần như tôi có thể nói, nó phủ nhận ảnh hưởng của -n, -t-q, tất cả trong số đó về cơ bản nói làm không thực sự chạy các lệnh. Vì vậy, một dòng với một +ở phía trước sẽ được chạy.

Nếu bạn đọc hướng dẫn sử dụng Gnu Make chính thức, tất cả chúng đều được đề cập trong Chương 5 . Trong bản sao cũ của hướng dẫn sử dụng đó là chương về "các lệnh", nhưng thuật ngữ du jour bây giờ dường như là "công thức nấu ăn".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.