Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

makeposix - Trực tuyến trên đám mây

Chạy makeposix trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks qua Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

Đây là lệnh makeposix có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


tạo - duy trì, cập nhật và tái tạo các nhóm chương trình (PHÁT TRIỂN)

SYNOPSIS


làm cho [−einpqrst] [−f trang điểm]hữu ích. Cảm ơn ! [−k | −S] [vĩ mô=giá trịhữu ích. Cảm ơn !]
[Tên mục tiêuhữu ích. Cảm ơn !]

MÔ TẢ


Sản phẩm làm cho tiện ích sẽ cập nhật các tệp có nguồn gốc từ các tệp khác. Một trường hợp điển hình là
một nơi mà các tệp đối tượng được lấy từ các tệp nguồn tương ứng. Các làm cho tiện ích
kiểm tra các mối quan hệ thời gian và sẽ cập nhật các tệp dẫn xuất đó (được gọi là mục tiêu)
có thời gian sửa đổi sớm hơn thời gian sửa đổi của tệp (được gọi là điều kiện tiên quyết)
từ đó chúng được bắt nguồn. Tệp mô tả (makefile) chứa mô tả về
mối quan hệ giữa các tệp và các lệnh cần được thực hiện để cập nhật
mục tiêu để phản ánh những thay đổi trong điều kiện tiên quyết của chúng. Mỗi đặc điểm kỹ thuật, hoặc quy tắc, sẽ
bao gồm một mục tiêu, các điều kiện tiên quyết tùy chọn và các lệnh tùy chọn sẽ được thực thi khi
điều kiện tiên quyết là mới hơn mục tiêu. Có hai loại quy tắc:

1. Sự suy luận quy tắc, có một tên mục tiêu với ít nhất một ('.') và không
('/')

2. Mục tiêu quy tắc, có thể có nhiều hơn một tên mục tiêu

Ngoài ra, làm cho sẽ có một bộ sưu tập các macro và quy tắc suy luận tích hợp sẵn để
suy ra các mối quan hệ tiên quyết để đơn giản hóa việc bảo trì các chương trình.

Để nhận được chính xác hành vi được mô tả trong phần này, người dùng phải đảm bảo rằng
Makefile di động sẽ:

* Bao gồm mục tiêu đặc biệt .POSIX

* Bỏ qua bất kỳ mục tiêu đặc biệt nào được dành riêng cho việc triển khai (khoảng thời gian đầu tiếp theo là
chữ hoa) chưa được phần này chỉ định

Hành vi của làm cho là không xác định nếu một trong hai hoặc cả hai điều kiện này không được đáp ứng.

LỰA CHỌN


Sản phẩm làm cho tiện ích sẽ phù hợp với khối lượng Định nghĩa cơ sở của POSIX.1‐2008, Phần
12.2, Tiện ích cú pháp Hướng dẫn, ngoại trừ Hướng dẫn 9.

Các tùy chọn sau sẽ được hỗ trợ:

−e Nguyên nhân khiến các biến môi trường, bao gồm cả những biến có giá trị null, ghi đè macro
bài tập trong makefiles.

−f trang điểm
Chỉ định một makefile khác. Lý lẽ trang điểm là một tên đường dẫn của một
tệp mô tả, còn được gọi là trang điểm. Tên đường dẫn của '-'
phải biểu thị đầu vào tiêu chuẩn. Có thể có nhiều trường hợp của tùy chọn này,
và chúng sẽ được xử lý theo thứ tự được chỉ định. Hiệu quả của việc chỉ định
cùng một đối số tùy chọn nhiều hơn một lần là không xác định.

−i Bỏ qua các mã lỗi được trả về bởi các lệnh được gọi. Chế độ này giống như nếu
mục tiêu đặc biệt .PHỚT LỜ đã được chỉ định mà không có điều kiện tiên quyết.

−k Tiếp tục cập nhật các mục tiêu khác không phụ thuộc vào mục tiêu hiện tại nếu a
lỗi không bị bỏ qua xảy ra trong khi thực hiện các lệnh để đưa mục tiêu lên đến
ngày.

−n Viết các lệnh sẽ được thực thi trên đầu ra tiêu chuẩn, nhưng không thực thi
họ. Tuy nhiên, các dòng có ('+'tiền tố) sẽ được thực thi. Trong này
chế độ, các dòng có dấu tại ('@') tiền tố ký tự sẽ được viết theo tiêu chuẩn
đầu ra.

−p Ghi vào đầu ra tiêu chuẩn tập hợp đầy đủ các định nghĩa macro và mục tiêu
mô tả. Định dạng đầu ra không xác định.

−q Trả về giá trị thoát bằng XNUMX nếu tệp đích được cập nhật; nếu không, hãy trả về một
giá trị thoát là 1. Các mục tiêu sẽ không được cập nhật nếu tùy chọn này được chỉ định.
Tuy nhiên, một dòng lệnh makefile (được liên kết với các mục tiêu) với
dấu> ('+'tiền tố) sẽ được thực thi.

−r Xóa danh sách hậu tố và không sử dụng các quy tắc dựng sẵn.

−S Chấm dứt làm cho nếu một lỗi xảy ra trong khi thực hiện các lệnh để đưa một mục tiêu
cập nhật. Điều này sẽ là mặc định và ngược lại với −k.

−s Không viết dòng lệnh makefile hoặc thông báo chạm vào (xem −t) theo tiêu chuẩn
xuất trước khi thực thi. Chế độ này sẽ giống như nếu mục tiêu đặc biệt
.IM LẶNG đã được chỉ định mà không có điều kiện tiên quyết.

−t Cập nhật thời gian sửa đổi của từng mục tiêu như một chạm mục tiêu đã từng
Thực thi. Các mục tiêu có điều kiện tiên quyết nhưng không có lệnh (xem Mục tiêu Nội quy), hoặc là
đã được cập nhật, sẽ không được động đến theo cách này. Viết
thông báo đến đầu ra tiêu chuẩn cho mỗi tệp đích cho biết tên của tệp
và rằng nó đã được xúc động. Thông thường, trang điểm dòng lệnh liên kết với
mỗi mục tiêu không được thực hiện. Tuy nhiên, một dòng lệnh với ('+')
tiền tố sẽ được thực thi.

Bất kỳ tùy chọn nào được chỉ định trong LÀM CỜ biến môi trường phải được đánh giá trước bất kỳ
các tùy chọn được chỉ định trên làm cho dòng lệnh tiện ích. Nếu −k−S lựa chọn là cả hai
được chỉ định trên làm cho dòng lệnh tiện ích hoặc bằng LÀM CỜ biến môi trường,
tùy chọn cuối cùng được chỉ định sẽ được ưu tiên. Nếu −f or −p các tùy chọn xuất hiện trong
LÀM CỜ biến môi trường, kết quả là không xác định.

TOÁN HẠNG


Các toán hạng sau sẽ được hỗ trợ:

Tên mục tiêu
Tên mục tiêu, như được xác định trong phần MÔ TẢ MỞ RỘNG. Nếu không có mục tiêu là
được chỉ định, trong khi làm cho đang xử lý trang điểm, mục tiêu đầu tiên làm cho
các cuộc chạm trán không phải là mục tiêu đặc biệt hoặc quy tắc suy luận sẽ được sử dụng.

vĩ mô=giá trị
Định nghĩa macro, như được định nghĩa trong Macros.

Nếu Tên mục tiêuvĩ mô=giá trị toán hạng được trộn lẫn trên làm cho lệnh tiện ích
dòng, kết quả không xác định.

STDIN


Đầu vào tiêu chuẩn chỉ được sử dụng nếu trang điểm tùy chọn-đối số là '-'. Xem
Phần INPUT FILES.

ĐẦU VÀO CÁC TẬP TIN


Tệp đầu vào, còn được gọi là makefile, là một tệp văn bản chứa các quy tắc, macro
định nghĩa và nhận xét. Xem phần MÔ TẢ MỞ RỘNG.

MÔI TRƯỜNG BIẾN


Các biến môi trường sau đây sẽ ảnh hưởng đến việc thực hiện làm cho:

NGÔN NGỮ Cung cấp giá trị mặc định cho các biến quốc tế hóa chưa được đặt hoặc
vô giá trị. (Xem tập Định nghĩa cơ bản của POSIX.1‐2008, Phần 8.2,
quốc tế hóa Biến ưu tiên quốc tế hóa
các biến được sử dụng để xác định giá trị của danh mục ngôn ngữ.)

LC_ALL Nếu được đặt thành giá trị chuỗi không trống, hãy ghi đè giá trị của tất cả các chuỗi khác
các biến quốc tế hóa.

LC_CTYPE Xác định ngôn ngữ để diễn giải chuỗi byte dữ liệu văn bản
dưới dạng ký tự (ví dụ: byte đơn trái ngược với ký tự nhiều byte trong
đối số và tệp đầu vào).

LC_MESSAGES
Xác định ngôn ngữ sẽ được sử dụng để ảnh hưởng đến định dạng và nội dung của
thông báo chẩn đoán được ghi vào lỗi tiêu chuẩn.

LÀM CỜ
Biến này sẽ được hiểu là một chuỗi ký tự đại diện cho một chuỗi
ký tự tùy chọn sẽ được sử dụng làm tùy chọn mặc định. Việc thực hiện sẽ
chấp nhận cả hai định dạng sau (nhưng không cần chấp nhận chúng khi được trộn lẫn với nhau):

* Các ký tự là các chữ cái tùy chọn không có đầu ký tự hoặc
sự tách biệt được sử dụng trên một làm cho dòng lệnh tiện ích.

* Các ký tự được định dạng theo cách tương tự như một phần của làm cho
dòng lệnh tiện ích: các tùy chọn được đặt trước nhân vật và
-phân biệt như được mô tả trong tập Định nghĩa cơ bản của
POSIX.1-2008, Phần 12.2, Tiện ích cú pháp Hướng dẫn. Các vĩ mô=giá trị
toán hạng định nghĩa macro cũng có thể được đưa vào. Sự khác biệt giữa
nội dung của LÀM CỜlàm cho dòng lệnh tiện ích là nội dung
của biến không được phép mở rộng từ (xem Phần
2.6, Từ Mở rộng) được liên kết với việc phân tích cú pháp các giá trị dòng lệnh.

NLSPATH Xác định vị trí của danh mục thư để xử lý LC_MESSAGES.

DỰ ÁN
Cung cấp một thư mục được sử dụng để tìm kiếm các tệp SCCS không được tìm thấy trong hiện tại
danh mục. Trong tất cả các trường hợp sau, việc tìm kiếm tệp SCCS được thực hiện trong
cac thu mục SCCS trong thư mục đã xác định. Nếu giá trị của DỰ ÁN
bắt đầu bằng một , nó sẽ được coi là một tên đường dẫn tuyệt đối; nếu không thì,
giá trị của DỰ ÁN được coi là tên người dùng và tên viết tắt của người dùng đó
thư mục làm việc sẽ được kiểm tra cho một thư mục con src or nguồn. Nếu như một
thư mục được tìm thấy, nó sẽ được sử dụng. Nếu không, giá trị được sử dụng như một giá trị tương đối
tên đường dẫn.

If DỰ ÁN không được đặt hoặc có giá trị null, tìm kiếm tệp SCCS sẽ
được thực hiện trong thư mục SCCS trong thư mục hiện tại.

Các thiết lập của DỰ ÁN ảnh hưởng đến tất cả các tệp được liệt kê trong phần còn lại của điều này
mô tả tiện ích cho các tệp có thành phần được đặt tên SCCS.

Giá trị của SHELL biến môi trường sẽ không được sử dụng như một macro và sẽ không
sửa đổi bằng cách xác định SHELL macro trong makefile hoặc trên dòng lệnh. Tất cả những thứ khác
các biến môi trường, bao gồm cả những biến có giá trị null, sẽ được sử dụng làm macro, như
được định nghĩa trong Macros.

BẤT NGỜ SỰ KIỆN


Nếu chưa được bỏ qua, làm cho sẽ bẫy SIGHUP, SIGTERM, SIGINT và SIGQUIT và loại bỏ
mục tiêu hiện tại trừ khi mục tiêu là một thư mục hoặc mục tiêu là điều kiện tiên quyết của
mục tiêu đặc biệt .QUÝ GIÁ hoặc trừ khi một trong những −n, −p, hoặc là −q các tùy chọn đã được chỉ định. Không tí nào
các mục tiêu bị loại bỏ theo cách này sẽ được báo cáo trong các thông báo chẩn đoán không xác định
định dạng, được ghi thành lỗi tiêu chuẩn. Sau quá trình dọn dẹp này, nếu có, làm cho sẽ lấy
hành động tiêu chuẩn cho tất cả các tín hiệu khác.

GIỚI THIỆU


Sản phẩm làm cho tiện ích sẽ ghi tất cả các lệnh được thực thi vào đầu ra tiêu chuẩn trừ khi −s
tùy chọn đã được chỉ định, lệnh được bắt đầu bằng dấu tại hoặc mục tiêu đặc biệt
.IM LẶNG có mục tiêu hiện tại làm điều kiện tiên quyết hoặc không có điều kiện tiên quyết. Nếu như làm cho
được gọi ra mà không cần thực hiện bất kỳ công việc nào, nó sẽ viết một thông báo đến tiêu chuẩn
đầu ra cho biết rằng không có hành động nào được thực hiện. Nếu −t tùy chọn hiện có và một tệp là
cảm động, làm cho sẽ ghi vào đầu ra tiêu chuẩn một thông báo có định dạng không xác định cho biết
rằng tệp đã được chạm vào, bao gồm cả tên tệp của tệp.

STDERR


Lỗi chuẩn chỉ được sử dụng cho các thông báo chẩn đoán.

OUTPUT CÁC TẬP TIN


Tệp có thể được tạo khi −t tùy chọn hiện tại. Các tệp bổ sung cũng có thể được tạo
bởi các tiện ích được gọi bởi làm cho.

ĐA THẾ HỆ MÔ TẢ


Sản phẩm làm cho tiện ích cố gắng thực hiện các hành động cần thiết để đảm bảo rằng
mục tiêu được cập nhật. Mục tiêu được coi là lỗi thời nếu nó cũ hơn bất kỳ mục tiêu nào
điều kiện tiên quyết hoặc nếu nó không tồn tại. Các làm cho tiện ích sẽ coi tất cả các điều kiện tiên quyết là
tự nhắm mục tiêu và đệ quy đảm bảo rằng chúng được cập nhật, xử lý chúng trong
thứ tự mà chúng xuất hiện trong quy tắc. Các làm cho tiện ích sẽ sử dụng thời gian sửa đổi
trong số các tệp để xác định xem liệu các mục tiêu tương ứng có lỗi thời hay không.

Sau làm cho đã đảm bảo rằng tất cả các điều kiện tiên quyết của mục tiêu đều được cập nhật và nếu
mục tiêu đã lỗi thời, các lệnh liên quan đến mục nhập đích sẽ được thực hiện. Nếu như
không có lệnh nào được liệt kê cho mục tiêu, mục tiêu sẽ được coi là cập nhật.

makefile cú pháp
Makefile có thể chứa các quy tắc, định nghĩa macro (xem Macros), bao gồm các dòng và nhận xét.
Có hai loại quy tắc: suy luận quy tắcmục tiêu quy tắc. Các làm cho tiện ích sẽ
chứa một tập hợp các quy tắc suy luận dựng sẵn. Nếu −r tùy chọn hiện có, các quy tắc tích hợp sẵn
sẽ không được sử dụng và danh sách hậu tố sẽ bị xóa. Các quy tắc bổ sung của cả hai loại có thể
được chỉ định trong một tệp makefile. Nếu một quy tắc được xác định nhiều lần, giá trị của quy tắc
sẽ là cái cuối cùng được chỉ định. Macro cũng có thể được xác định nhiều lần và
giá trị của macro được chỉ định trong Macros. Nhận xét bắt đầu bằng ('#')
và tiếp tục cho đến khi không thoát đạt được.

Theo mặc định, các tệp sau sẽ được thử theo trình tự: ./makefile./makefile. Nếu
cũng không ./makefile or ./makefile được tìm thấy, các tệp khác do triển khai xác định cũng có thể
cố gắng. Trên các hệ thống tuân theo XSI, các tệp bổ sung ./s.makefile, SCCS / s.makefile,
./s.MakefileSCCS / s.Makefile cũng sẽ được thử.

Sản phẩm −f tùy chọn sẽ chỉ đạo làm cho bỏ qua bất kỳ tệp mặc định nào trong số này và sử dụng
thay vào đó là đối số như một tệp makefile. Nếu '-' đối số được chỉ định, đầu vào tiêu chuẩn phải là
đã sử dụng.

Thuật ngữ trang điểm được sử dụng để tham chiếu đến bất kỳ quy tắc nào do người dùng cung cấp, cho dù trong
./makefile hoặc các biến thể của nó, hoặc được chỉ định bởi −f tùy chọn.

Các quy tắc trong makefiles sẽ bao gồm các loại dòng sau: quy tắc đích,
bao gồm các mục tiêu đặc biệt (xem Mục tiêu Nội quy), quy tắc suy luận (xem Sự suy luận Nội quy), vĩ mô
định nghĩa (xem Macros), dòng trống và nhận xét.

Các quy tắc mục tiêu và suy luận có thể chứa lệnh dòng. Dòng lệnh có thể có tiền tố
sẽ được gỡ bỏ trước khi thực hiện (xem makefile Thực hiện).

Khi một người trốn thoát (một trước một ) được tìm thấy ở bất kỳ đâu trong
makefile ngoại trừ trong một dòng lệnh, một dòng bao gồm hoặc một dòng ngay trước
bao gồm dòng, nó sẽ được thay thế, cùng với bất kỳ khoảng trắng hàng đầu nào trên phần sau
dòng, với một . Khi một người trốn thoát được tìm thấy trong một dòng lệnh trong
makefile, dòng lệnh sẽ chứa , NS , và tiếp theo
dòng, ngoại trừ ký tự đầu tiên của dòng tiếp theo sẽ không được đưa vào nếu nó là
. Khi một người trốn thoát được tìm thấy trong một dòng bao gồm hoặc trong một dòng ngay lập tức
trước dòng bao gồm, hành vi là không xác định.

Bao gồm đường
Nếu từ bao gồm xuất hiện ở đầu dòng và được theo sau bởi một hoặc nhiều
ký tự, chuỗi được tạo thành bởi phần còn lại của dòng sẽ được xử lý như
sau để tạo ra một tên đường dẫn:

* Dấu vết và mọi bình luận sẽ bị loại bỏ. Nếu chuỗi kết quả
chứa bất kỳ ký tự dấu ngoặc kép nào ('' ') hành vi là không xác định.

* Chuỗi kết quả sẽ được xử lý để mở rộng macro (xem Macros.

* Không tí nào các ký tự xuất hiện sau ký tự đầu tiên không phải sẽ được sử dụng như
dấu phân cách để chia chuỗi được mở rộng macro thành các trường. Không xác định được liệu
bất kỳ ký tự khoảng trắng nào khác cũng được sử dụng làm dấu phân cách. Nó không xác định
có mở rộng tên đường dẫn hay không (xem Phần 2.13, Họa tiết Phù hợp ký hiệu) cũng
đã thực hiện.

* Nếu quá trình xử lý dấu phân tách và mở rộng tên đường dẫn tùy chọn dẫn đến kết quả bằng không
hoặc hai hoặc nhiều trường không trống, hành vi không được xác định. Nếu nó dẫn đến một
trường không trống, trường đó được lấy làm tên đường dẫn.

Nếu tên đường dẫn không bắt đầu bằng '/' nó sẽ được coi là liên quan đến dòng điện
thư mục làm việc của tiến trình, không liên quan đến thư mục chứa makefile.
Nếu tệp không tồn tại ở vị trí này, không xác định được liệu bổ sung
thư mục được tìm kiếm.

Nội dung của tệp được chỉ định bởi tên đường dẫn sẽ được đọc và xử lý như thể chúng
xuất hiện trong makefile thay cho dòng bao gồm. Nếu tệp kết thúc bằng một mã thoát
hành vi là không xác định.

Bản thân tệp có thể chứa thêm các dòng bao gồm. Việc triển khai sẽ hỗ trợ lồng ghép
trong số các tệp bao gồm có độ sâu ít nhất là 16.

makefile Thực hiện
Các dòng lệnh Makefile sẽ được xử lý lần lượt.

Dòng lệnh Makefile có thể có một hoặc nhiều tiền tố sau: a ('-'),
dấu tại ('@'), hoặc một ('+'). Những điều này sẽ sửa đổi cách thức mà làm cho
xử lý lệnh.

- Nếu tiền tố lệnh chứa , hoặc là −i tùy chọn hiện tại, hoặc
mục tiêu đặc biệt .PHỚT LỜ có mục tiêu hiện tại làm điều kiện tiên quyết hoặc không có
điều kiện tiên quyết, bất kỳ lỗi nào được tìm thấy trong khi thực hiện lệnh sẽ được bỏ qua.

@ Nếu tiền tố lệnh chứa dấu tại và dấu làm cho dòng lệnh tiện ích −n
tùy chọn không được chỉ định hoặc −s tùy chọn hiện tại, hoặc mục tiêu đặc biệt .IM LẶNG
có mục tiêu hiện tại làm điều kiện tiên quyết hoặc không có điều kiện tiên quyết, lệnh
sẽ không được ghi vào đầu ra tiêu chuẩn trước khi nó được thực thi.

+ Nếu tiền tố lệnh chứa một , điều này chỉ ra một dòng lệnh makefile
điều đó sẽ được thực hiện ngay cả khi −n, −q, hoặc là −t được quy định.

An thực hiện hàng được xây dựng từ dòng lệnh bằng cách loại bỏ bất kỳ ký tự tiền tố nào. Ngoại trừ
như được mô tả dưới tiền tố dấu tại, dòng thực thi sẽ được viết theo tiêu chuẩn
đầu ra, tùy chọn trước một . Dòng thực thi sau đó sẽ được thực hiện bởi
shell như thể nó được truyền làm đối số cho hệ thống() giao diện, ngoại trừ nếu
lỗi không bị bỏ qua thì shell −e tùy chọn cũng sẽ có hiệu lực. Nếu lỗi
đang bị bỏ qua đối với lệnh (do kết quả của −i tùy chọn, một '-' tiền tố lệnh, hoặc
a .PHỚT LỜ mục tiêu đặc biệt), vỏ −e tùy chọn sẽ không có hiệu lực. Môi trường cho
lệnh đang được thực thi phải chứa tất cả các biến trong môi trường của làm cho.

Theo mặc định, khi làm cho nhận được trạng thái khác XNUMX từ việc thực hiện một lệnh, nó sẽ
kết thúc bằng một thông báo lỗi thành lỗi tiêu chuẩn.

Mục tiêu Nội quy
Các quy tắc mục tiêu được định dạng như sau:

mục tiêu [mục tiêuhữu ích. Cảm ơn !]: [điều kiện tiên quyếthữu ích. Cảm ơn !] [;lệnh]
[lệnh
lệnh
hữu ích. Cảm ơn !]

hàng việc này làm không bắt đầu với

Các mục tiêu được chỉ định bởi một -danh sách mục tiêu được phân tách, không rỗng, sau đó là một
, sau đó a -danh sách điều kiện tiên quyết-riêng, có thể trống. Nhắn tin theo sau a
, nếu có, và tất cả các dòng tiếp theo bắt đầu bằng , là lệnh makefile
dòng sẽ được thực hiện để cập nhật mục tiêu. Dòng không trống đầu tiên không bắt đầu
với một hoặc '#' sẽ bắt đầu một mục mới. Một dòng trống hoặc dòng trống hoặc một dòng bắt đầu
với '#', có thể bắt đầu một mục mới.

Các ứng dụng sẽ chọn tên đích từ tập hợp các ký tự chỉ bao gồm
dấu chấm, dấu gạch dưới, chữ số và bảng chữ cái từ bộ ký tự di động (xem
Khối lượng Định nghĩa cơ bản của POSIX.1‐2008, Phần 6.1, di động Nhân vật Thiết lập).
Việc triển khai có thể cho phép các ký tự khác trong tên mục tiêu dưới dạng phần mở rộng. Các
diễn giải các mục tiêu có chứa các ký tự '%''' ' được xác định thực thi.

Một mục tiêu có điều kiện tiên quyết, nhưng không có bất kỳ lệnh nào, có thể được sử dụng để thêm vào
danh sách tiên quyết cho mục tiêu đó. Chỉ một quy tắc mục tiêu cho bất kỳ mục tiêu nhất định nào có thể chứa
lệnh.

Các dòng bắt đầu bằng một trong các dòng sau được gọi là đặc biệt mục tiêu và kiểm soát
hoạt động của làm cho:

.VỠ NỢ Nếu makefile sử dụng đích đặc biệt này, ứng dụng sẽ đảm bảo rằng nó
được chỉ định bằng các lệnh, nhưng không có điều kiện tiên quyết. Các lệnh sẽ
được sử dụng bởi làm cho nếu không có quy tắc nào khác để xây dựng mục tiêu.

.PHỚT LỜ Điều kiện tiên quyết của mục tiêu đặc biệt này là bản thân các mục tiêu; điều này sẽ gây ra
lỗi từ các lệnh liên quan đến chúng sẽ được bỏ qua theo cách tương tự như
được chỉ định bởi −i Lựa chọn. Các lần xuất hiện tiếp theo của .PHỚT LỜ sẽ thêm vào
danh sách các mục tiêu bỏ qua lỗi lệnh. Nếu không có điều kiện tiên quyết nào được chỉ định, làm cho
sẽ cư xử như thể −i tùy chọn đã được chỉ định và lỗi từ tất cả các lệnh
liên quan đến tất cả các mục tiêu sẽ được bỏ qua.

.POSIX Ứng dụng phải đảm bảo rằng mục tiêu đặc biệt này được chỉ định mà không có
điều kiện tiên quyết hoặc lệnh. Nếu nó xuất hiện dưới dạng dòng không phải chú thích đầu tiên trong
làm tệp, làm cho sẽ xử lý makefile theo quy định của phần này;
mặt khác, hành vi của làm cho là không xác định.

.QUÝ GIÁ Điều kiện tiên quyết của mục tiêu đặc biệt này sẽ không bị loại bỏ nếu làm cho nhận một
của các sự kiện không đồng bộ được mô tả rõ ràng trong SỰ KIỆN KHÔNG ĐỒNG BỘ
phần. Các lần xuất hiện tiếp theo của .QUÝ GIÁ sẽ thêm vào danh sách quý giá
các tập tin. Nếu không có điều kiện tiên quyết nào được chỉ định, tất cả các mục tiêu trong makefile sẽ là
được đối xử như thể được chỉ định với .QUÝ GIÁ.

.SCCS_GET Ứng dụng phải đảm bảo rằng mục tiêu đặc biệt này được chỉ định mà không có
điều kiện tiên quyết. Nếu mục tiêu đặc biệt này được bao gồm trong một tệp makefile, các lệnh
được chỉ định với mục tiêu này sẽ thay thế các lệnh mặc định được liên kết với
mục tiêu đặc biệt này (xem Mặc định Nội quy). Các lệnh được chỉ định với điều này
target được sử dụng để lấy tất cả các tệp SCCS không được tìm thấy trong hiện tại
thư mục.

Khi các tệp nguồn được đặt tên trong danh sách phụ thuộc, làm cho sẽ đối xử với họ chỉ
giống như bất kỳ mục tiêu nào khác. Bởi vì tệp nguồn được cho là có trong
thư mục, không cần thêm mục nhập cho nó vào makefile. Khi một
target không có phụ thuộc, nhưng có trong thư mục, làm cho sẽ giả định
rằng tệp đó được cập nhật. Tuy nhiên, nếu một tệp SCCS có tên SCCS / s.tập tin nguồn
được tìm thấy cho một mục tiêu tập tin nguồn, làm cho so sánh dấu thời gian của mục tiêu
tập tin với SCCS / s.source_file để đảm bảo mục tiêu được cập nhật. Nếu như
mục tiêu bị thiếu hoặc nếu tệp SCCS mới hơn, làm cho sẽ tự động
phát hành các lệnh được chỉ định cho .SCCS_GET mục tiêu đặc biệt để lấy
phiên bản gần đây nhất. Tuy nhiên, nếu mục tiêu có thể được ghi bởi bất kỳ ai, làm cho phải
không truy xuất phiên bản mới.

.IM LẶNG Điều kiện tiên quyết của mục tiêu đặc biệt này là bản thân các mục tiêu; điều này sẽ gây ra
các lệnh liên quan đến chúng không được ghi vào đầu ra tiêu chuẩn trước đó
chúng được thực thi. Các lần xuất hiện tiếp theo của .IM LẶNG sẽ thêm vào danh sách
mục tiêu bằng lệnh im lặng. Nếu không có điều kiện tiên quyết nào được chỉ định, làm cho phải
cư xử như thể −s tùy chọn đã được chỉ định và không có lệnh hoặc tin nhắn cảm ứng
được liên kết với bất kỳ mục tiêu nào sẽ được ghi vào đầu ra tiêu chuẩn.

.Hậu Tố Điều kiện tiên quyết của .Hậu Tố sẽ được thêm vào danh sách các hậu tố đã biết và
được sử dụng cùng với các quy tắc suy luận (xem Sự suy luận Nội quy). Nếu
.Hậu Tố không có bất kỳ điều kiện tiên quyết nào, danh sách các hậu tố đã biết sẽ là
đã xóa.

Các mục tiêu đặc biệt .PHỚT LỜ, .POSIX, .QUÝ GIÁ, .IM LẶNG.Hậu Tố sẽ được chỉ định
không có lệnh.

Nhắm mục tiêu có tên bao gồm một theo sau là các chữ cái viết hoa
"POSIX" và sau đó bất kỳ ký tự nào khác được dành riêng cho quá trình tiêu chuẩn hóa trong tương lai. Mục tiêu
với các tên bao gồm một theo sau là một hoặc nhiều chữ hoa là
dành riêng cho các phần mở rộng triển khai.

Macros
Các định nghĩa macro có dạng:

chuỗi1 = [chuỗi2]

Macro có tên chuỗi1 được định nghĩa là có giá trị của chuỗi2, Nơi chuỗi2 is
được định nghĩa là tất cả các ký tự, nếu có, sau , cho đến một ký tự bình luận
('#') hoặc không thoát . Không tí nào các ký tự ngay trước hoặc sau
sẽ được bỏ qua.

Các ứng dụng sẽ chọn các tên macro từ tập hợp các ký tự chỉ bao gồm
dấu chấm, dấu gạch dưới, chữ số và bảng chữ cái từ bộ ký tự di động (xem
Khối lượng Định nghĩa cơ bản của POSIX.1‐2008, Phần 6.1, di động Nhân vật Thiết lập). Một macro
tên không được chứa một . Việc triển khai có thể cho phép các ký tự khác trong
tên macro dưới dạng phần mở rộng.

Macro có thể xuất hiện ở bất kỳ đâu trong makefile. Mở rộng macro bằng cách sử dụng các biểu mẫu $ (chuỗi1) hoặc
${chuỗi1} sẽ được thay thế bởi chuỗi2, như sau:

* Macro trong các dòng mục tiêu sẽ được đánh giá khi dòng mục tiêu được đọc.

* Macro trong các dòng lệnh makefile sẽ được đánh giá khi lệnh được thực thi.

* Macro trong chuỗi trước trong một định nghĩa vĩ mô sẽ được đánh giá
khi việc gán macro được thực hiện.

* Macro sau trong một định nghĩa vĩ mô sẽ không được đánh giá cho đến khi
macro đã xác định được sử dụng trong một quy tắc hoặc lệnh hoặc trước trong một macro
Định nghĩa.

Dấu ngoặc đơn hoặc dấu ngoặc nhọn là tùy chọn nếu chuỗi1 là một ký tự duy nhất. Macro $$
sẽ được thay thế bằng một ký tự '$'. Nếu chuỗi1 trong phần mở rộng macro chứa một
mở rộng vĩ mô, kết quả là không xác định.

Mở rộng macro bằng cách sử dụng các biểu mẫu $ (chuỗi1[:Sub1=[Sub2]]) hoặc
${chuỗi1[:Sub1=[Sub2]]} có thể được sử dụng để thay thế tất cả các lần xuất hiện của Sub1 với Sub2
khi thay thế macro được thực hiện. Các Sub1 được thay thế sẽ được công nhận
khi nó là một hậu tố ở cuối một từ trong chuỗi1 (nơi một lời, trong bối cảnh này, là
được định nghĩa là một chuỗi được phân tách bằng đầu dòng, , hoặc một ).
If chuỗi1 trong một mở rộng macro chứa một mở rộng macro, kết quả không xác định.

Mở rộng macro trong chuỗi1 của các dòng định nghĩa macro sẽ được đánh giá khi đọc. Macro
mở rộng trong chuỗi2 dòng định nghĩa macro sẽ được thực hiện khi macro
xác định bởi chuỗi1 được mở rộng trong một quy tắc hoặc lệnh.

Các định nghĩa vĩ mô sẽ được lấy từ các nguồn sau đây, theo logic sau
đặt hàng trước khi (các) tệp makefile được đọc.

1. Macro được chỉ định trên làm cho dòng lệnh tiện ích, theo thứ tự được chỉ định trên
dòng lệnh. Không xác định được liệu các macro nội bộ được xác định trong nội Macros
được chấp nhận từ nguồn này.

2. Macro được xác định bởi LÀM CỜ biến môi trường, theo thứ tự được chỉ định trong
biến môi trường. Không xác định được liệu các macro nội bộ được xác định trong
nội Macros được chấp nhận từ nguồn này.

3. Nội dung của môi trường, ngoại trừ LÀM CỜSHELL biến và
bao gồm các biến có giá trị null.

4. Macro được xác định trong các quy tắc suy luận được tích hợp sẵn làm cho.

Các định nghĩa macro từ các nguồn này sẽ không ghi đè các định nghĩa macro từ một
nguồn được đánh số. Các định nghĩa macro từ một nguồn duy nhất (ví dụ: làm cho tiện ích
dòng lệnh, LÀM CỜ biến môi trường hoặc các biến môi trường khác)
sẽ ghi đè các định nghĩa macro trước đó từ cùng một nguồn.

Các macro được xác định trong (các) makefile sẽ ghi đè các định nghĩa macro xảy ra trước chúng
trong (các) tệp makefile và định nghĩa macro từ nguồn 4. Nếu −e tùy chọn không được chỉ định,
macro được xác định trong (các) makefile sẽ ghi đè các định nghĩa macro từ nguồn 3. Macro
được định nghĩa trong (các) makefile sẽ không ghi đè các định nghĩa macro từ nguồn 1 hoặc nguồn 2.

Trước khi (các) tệp makefile được đọc, tất cả làm cho các tùy chọn dòng lệnh tiện ích (ngoại trừ −f
−p) Và làm cho định nghĩa macro dòng lệnh tiện ích (ngoại trừ bất kỳ định nghĩa nào cho LÀM CỜ
macro), chưa được bao gồm trong LÀM CỜ macro, sẽ được thêm vào LÀM CỜ
macro, được trích dẫn theo cách được triển khai xác định sao cho khi LÀM CỜ được đọc bởi
một ví dụ khác của làm cho lệnh, giá trị của macro ban đầu được khôi phục. Khác
các tùy chọn và macro do triển khai xác định cũng có thể được thêm vào LÀM CỜ vĩ mô. Nếu như
điều này sửa đổi giá trị của LÀM CỜ macro, hoặc, nếu LÀM CỜ macro được sửa đổi lúc
bất kỳ lần nào sau đó, LÀM CỜ biến môi trường sẽ được sửa đổi để phù hợp với
giá trị của LÀM CỜ vĩ mô. Kết quả của việc thiết lập LÀM CỜ trong Makefile là
không xác định.

Trước khi (các) tệp makefile được đọc, tất cả làm cho định nghĩa macro dòng lệnh tiện ích
(Ngoại trừ LÀM CỜ macro hoặc SHELL macro) sẽ được thêm vào môi trường của làm cho.
Các biến khác do việc triển khai xác định cũng có thể được thêm vào môi trường của làm cho.

Sản phẩm SHELL macro sẽ được đối xử đặc biệt. Nó sẽ được cung cấp bởi làm cho và đặt thành
tên đường dẫn của trình thông dịch ngôn ngữ lệnh shell (xem sh). Các SHELL môi trường
biến sẽ không ảnh hưởng đến giá trị của SHELL vĩ mô. Nếu như SHELL được định nghĩa trong
makefile hoặc được chỉ định trên dòng lệnh, nó sẽ thay thế giá trị ban đầu của
SHELL macro, nhưng sẽ không ảnh hưởng đến SHELL biến môi trường. Các tác dụng khác của
xác định SHELL trong makefile hoặc trên dòng lệnh được xác định thực thi.

Sự suy luận Nội quy
Các quy tắc suy luận được định dạng như sau:

mục tiêu:
lệnh
[lệnh]
hữu ích. Cảm ơn !

hàng việc này làm không bắt đầu với or #

Ứng dụng sẽ đảm bảo rằng mục tiêu phần là tên mục tiêu hợp lệ (xem Mục tiêu
Nội quy) của hình thức .s2 or .s1.s2 (Ở đâu .s1.s2 là những hậu tố đã được đưa ra như
điều kiện tiên quyết của .Hậu Tố mục tiêu đặc biệt và s1s2 không chứa bất kỳ hoặc
ký tự.) Nếu chỉ có một trong mục tiêu, nó là một hậu tố đơn
quy tắc suy luận. Mục tiêu có hai khoảng thời gian là quy tắc suy luận hậu tố kép. Sự suy luận
các quy tắc chỉ có thể có một mục tiêu trước .

Ứng dụng sẽ đảm bảo rằng makefile không chỉ định các điều kiện tiên quyết cho
quy tắc suy luận; không có ký tự nào khác ngoài khoảng trắng sẽ theo sau bên trong
dòng đầu tiên, ngoại trừ khi tạo trống qui định, được mô tả dưới đây. Điều kiện tiên quyết là
suy ra, như mô tả dưới đây.

Các quy tắc suy luận có thể được định nghĩa lại. Mục tiêu phù hợp với quy tắc suy luận hiện có sẽ
ghi đè quy tắc suy luận cũ. Quy tắc trống có thể được tạo bằng lệnh bao gồm
chỉ đơn giản là một (nghĩa là, quy tắc vẫn tồn tại và được tìm thấy trong quy tắc suy luận
tìm kiếm, nhưng vì nó trống nên việc thực thi không có tác dụng). Quy tắc trống cũng có thể là
được định dạng như sau:

loại trừ:;

nơi không hoặc nhiều hơn các ký tự tách biệt và .

Sản phẩm làm cho tiện ích sử dụng các hậu tố của mục tiêu và điều kiện tiên quyết của chúng để suy ra cách
mục tiêu có thể được cập nhật. Danh sách các quy tắc suy luận xác định các lệnh được
Thực thi. Theo mặc định, làm cho chứa một tập hợp các quy tắc suy luận cài sẵn. Quy tắc bổ sung
có thể được chỉ định trong makefile.

Mục tiêu đặc biệt .Hậu Tố làm điều kiện tiên quyết của nó là một danh sách các hậu tố sẽ
được sử dụng bởi các quy tắc suy luận. Thứ tự mà các hậu tố được chỉ định xác định
thứ tự sử dụng các quy tắc suy luận cho các hậu tố. Các hậu tố mới sẽ là
được thêm vào danh sách hiện tại bằng cách chỉ định một .Hậu Tố mục tiêu đặc biệt trong makefile. MỘT
.Hậu Tố đích không có điều kiện tiên quyết sẽ xóa danh sách các hậu tố. Trống rỗng
.Hậu Tố theo sau là mục tiêu mới .Hậu Tố danh sách được yêu cầu để thay đổi thứ tự của
các hậu tố.

Thông thường, người dùng sẽ cung cấp quy tắc suy luận cho mỗi hậu tố. Quy tắc suy luận để
cập nhật một mục tiêu với một hậu tố .s1 từ một điều kiện tiên quyết với một hậu tố .s2 được chỉ định là một
mục tiêu .s2.s1. Các macro nội bộ cung cấp phương tiện để chỉ định các quy tắc suy luận chung
(xem nội Macros).

Khi không tìm thấy quy tắc đích nào để cập nhật mục tiêu, các quy tắc suy luận sẽ được kiểm tra. Các
hậu tố của target (.s1) được xây dựng được so sánh với danh sách các hậu tố được chỉ định bởi
các .Hậu Tố mục tiêu đặc biệt. Nếu .s1 hậu tố được tìm thấy trong .Hậu Tố, suy luận
các quy tắc sẽ được tìm kiếm theo thứ tự được xác định cho đầu tiên .s2.s1 quy tắc có điều kiện tiên quyết
tập tin ($ *. s2) tồn tại. Nếu mục tiêu đã lỗi thời đối với điều kiện tiên quyết này, thì
các lệnh cho quy tắc suy luận đó sẽ được thực hiện.

Nếu mục tiêu được xây dựng không chứa hậu tố và không có quy tắc cho mục tiêu,
các quy tắc suy luận hậu tố đơn sẽ được kiểm tra. Các quy tắc suy luận hậu tố đơn
xác định cách tạo mục tiêu nếu tệp được tìm thấy có tên khớp với tên mục tiêu
với một trong các hậu tố đơn được thêm vào. Quy tắc với một hậu tố .s2 là định nghĩa của
làm thế nào để xây dựng mục tiêu từ mục tiêu.s2. Hậu tố kia (.s1) được coi là null.

MỘT ('~') trong các quy tắc trên đề cập đến một tệp SCCS trong thư mục hiện tại. Vì vậy,
quy tắc .c ~ .o sẽ chuyển đổi tệp nguồn ngôn ngữ C SCCS thành tệp đối tượng (.o).
Bởi vì s. của các tệp SCCS là một tiền tố, nó không tương thích với làm chođiểm hậu tố của
của chế độ xem. Vì thế '~' là một cách thay đổi bất kỳ tham chiếu tệp nào thành tệp SCCS
tài liệu tham khảo.

Thư viện
Nếu một mục tiêu hoặc điều kiện tiên quyết có chứa dấu ngoặc đơn, nó sẽ được coi là thành viên của một
thư viện lưu trữ. Cho lib(hội viên.o) biểu hiện lib đề cập đến tên của kho lưu trữ
thư viện và hội viên.o đến tên thành viên. Ứng dụng sẽ đảm bảo rằng thành viên
một tệp đối tượng với .o hậu tố. Thời gian sửa đổi của biểu thức là
thời gian sửa đổi cho thành viên được lưu trong thư viện lưu trữ; Thấy chưa ar. Các .a hậu tố
sẽ đề cập đến một thư viện lưu trữ. Các .s2.a quy tắc sẽ được sử dụng để cập nhật một thành viên trong
thư viện từ một tệp có hậu tố .s2.

nội Macros
Sản phẩm làm cho tiện ích sẽ duy trì năm macro nội bộ có thể được sử dụng trong mục tiêu và
quy tắc suy luận. Để xác định rõ ràng ý nghĩa của các macro này, một số
làm rõ các điều khoản mục tiêu loại trừ, suy luận loại trừ, mục tiêuđiều kiện tiên quyết is
cần thiết.

Các quy tắc mục tiêu được người dùng chỉ định trong tệp tạo cho một mục tiêu cụ thể. Sự suy luận
quy tắc do người dùng chỉ định hoặc làm cho-các quy tắc cụ thể cho một lớp tên đích cụ thể.
Điều kiện tiên quyết rõ ràng là những điều kiện tiên quyết được chỉ định trong makefile trên các dòng mục tiêu.
Điều kiện tiên quyết ngầm định là những điều kiện tiên quyết được tạo ra khi các quy tắc suy luận
đã sử dụng. Quy tắc suy luận được áp dụng cho các điều kiện tiên quyết ngầm định hoặc các điều kiện tiên quyết rõ ràng
không có các quy tắc đích được xác định cho chúng trong makefile. Các quy tắc mục tiêu được áp dụng
tới các mục tiêu được chỉ định trong makefile.

Trước khi bất kỳ mục tiêu nào trong makefile được cập nhật, mỗi điều kiện tiên quyết của nó (cả rõ ràng và
ngầm) sẽ được cập nhật. Điều này sẽ được thực hiện bằng cách xử lý đệ quy từng
điều kiện tiên quyết. Khi đệ quy, mỗi điều kiện tiên quyết sẽ trở thành mục tiêu của chính nó. Nó là
đến lượt mình, các điều kiện tiên quyết sẽ được xử lý đệ quy cho đến khi tìm thấy mục tiêu không có
điều kiện tiên quyết, tại thời điểm đó việc đệ quy dừng lại. Đệ quy sau đó sẽ sao lưu,
cập nhật từng mục tiêu khi nó đi.

Trong các định nghĩa sau, từ mục tiêu đề cập đến một trong số:

* Một mục tiêu được chỉ định trong makefile

* Điều kiện tiên quyết rõ ràng được chỉ định trong makefile trở thành mục tiêu khi làm cho
xử lý nó trong quá trình đệ quy

* Điều kiện tiên quyết ngầm định trở thành mục tiêu khi làm cho xử lý nó trong quá trình đệ quy

Trong các định nghĩa sau, từ điều kiện tiên quyết đề cập đến một trong những điều sau:

* Điều kiện tiên quyết rõ ràng được chỉ định trong makefile cho một mục tiêu cụ thể

* Một điều kiện tiên quyết ngầm định được tạo ra do kết quả của việc định vị một suy luận thích hợp
quy tắc và tệp tương ứng khớp với hậu tố của mục tiêu

Năm macro nội bộ là:

$ @ $ @ Sẽ đánh giá thành tên mục tiêu đầy đủ của mục tiêu hiện tại hoặc
tên tệp lưu trữ một phần của mục tiêu lưu trữ thư viện. Nó sẽ được đánh giá cho cả hai
các quy tắc mục tiêu và suy luận.

Ví dụ, trong .ca quy tắc suy luận, $ @ đại diện cho lỗi thời .a tập tin để
được xây dựng. Tương tự, trong quy tắc đích makefile để xây dựng lib.a từ tập tin.c, $ @
đại diện cho sự lỗi thời lib.a.

$% Macro $% sẽ chỉ được đánh giá khi đích hiện tại là một thư viện lưu trữ
thành viên của biểu mẫu tên thư viện(hội viên.o). Trong những trường hợp này, $ @ sẽ đánh giá
tên thư viện và $% sẽ đánh giá hội viên.o. Macro $% sẽ được đánh giá cho
cả quy tắc mục tiêu và suy luận.

Ví dụ: trong quy tắc đích makefile để xây dựng lib.a(tập tin.o), $% đại diện cho
tập tin.o, trái ngược với $ @, đại diện cho lib.a.

$? $? macro sẽ đánh giá danh sách các điều kiện tiên quyết mới hơn
Mục tiêu hiện tại. Nó sẽ được đánh giá cho cả quy tắc đích và quy tắc suy luận.

Ví dụ: trong quy tắc đích makefile để xây dựng ăn xin từ tập tin1.o, tập tin2.o
tập tin3.o, và ở đâu ăn xin không lỗi thời so với tập tin1.o, nhưng ngoài-
ngày đối với tập tin2.otập tin3.o, $? đại diện tập tin2.otập tin3.o.

$ <Trong một quy tắc suy luận, macro $ <sẽ đánh giá tên tệp có sự tồn tại của nó
đã cho phép chọn quy tắc suy luận cho mục tiêu. bên trong .VỠ NỢ quy tắc,
$ <macro sẽ đánh giá thành tên mục tiêu hiện tại. Ý nghĩa của $ <macro
nếu không sẽ không xác định.

Ví dụ, trong .ca quy tắc suy luận, $ <đại diện cho điều kiện tiên quyết .c tập tin.

$ * Macro $ * sẽ đánh giá thành tên mục tiêu hiện tại với hậu tố của nó đã bị xóa. Nó
ít nhất sẽ được đánh giá đối với các quy tắc suy luận.

Ví dụ, trong .ca quy tắc suy luận, $ *. o đại diện cho lỗi thời .o hồ sơ
điều đó tương ứng với điều kiện tiên quyết .c tập tin.

Mỗi macro nội bộ có một dạng thay thế. Khi một chữ hoa 'D' or 'NS' is
được thêm vào bất kỳ macro nào, ý nghĩa sẽ được thay đổi thành thư mục một phần cho 'D'
tên tập tin một phần cho 'NS'. Phần thư mục là tiền tố đường dẫn của tệp mà không có
dấu vết ; đối với thư mục hiện tại, phần thư mục là '.'. Khi $? vĩ mô
chứa nhiều hơn một tên tệp điều kiện tiên quyết, $ (? D) và $ (? F) (hoặc $ {? D} và $ {? F})
macro mở rộng thành danh sách các phần tên thư mục và các phần tên tệp tương ứng.

Đối với mục tiêu lib(hội viên.o) Và s2.a quy tắc, các macro nội bộ sẽ được định nghĩa là:

$< hội viên.s2

$* hội viên

$@ lib

$? hội viên.s2

$% hội viên.o

Mặc định Nội quy
Các quy tắc mặc định cho làm cho sẽ đạt được kết quả tương tự như sau
đã được sử dụng. Các triển khai không hỗ trợ Tiện ích phát triển ngôn ngữ C
tùy chọn có thể bỏ qua CC, CỜ, YACC, YFLAGS, LEX, lá cờ, LDFLAGS, và .c, .y.l
quy tắc suy luận. Các triển khai không hỗ trợ FORTRAN có thể bỏ qua FC, CỜ, và
.f quy tắc suy luận. Việc triển khai có thể cung cấp các macro và quy tắc bổ sung.

DÒNG MÁY CÁN BIÊN DẠNG ĐẶT BIỆT MỤC TIÊU

.SCCS_GET: sccs $ (SCCSFLAGS) nhận được $ (SCCSGETFLAGS) $ @

.SUFFIXES: .o .c .y .l .a .sh .f .c ~ .y ~ .l ~ .sh ~ .f ~

MACRO

MAKE = làm cho
AR = ar
ARFLAGS = −rv
YACC = yacc
YFLAGS =
LEX = lex
LFLAGS =
LDFLAGS =
CC = c99
CFLAGS = −O
FC = fort77
FFLAGS = −O 1
GET = lấy
GFLAGS =
SCCSFLAGS =
SCCSGETFLAGS = −s

SINGLE HẬU VỆ QUY TẮC

.NS:
$ (CC) $ (CFLAGS) $ (LDFLAGS) −o $ @ $

.NS:
$ (FC) $ (FFLAGS) $ (LDFLAGS) −o $ @ $

.NS:
cp $ <$ @
chmod a + x $ @

.c ~:
$ (GET) $ (GFLAGS) −p $ <> $ *. C
$ (CC) $ (CFLAGS) $ (LDFLAGS) −o $ @ $ *. C

.f ~:
$ (GET) $ (GFLAGS) −p $ <> $ *. F
$ (FC) $ (FFLAGS) $ (LDFLAGS) −o $ @ $ *. F

.sh ~:
$ (GET) $ (GFLAGS) −p $ <> $ *. Sh
cp $ *. sh $ @
chmod a + x $ @

GẤP ĐÔI HẬU VỆ QUY TẮC

.co:
$ (CC) $ (CFLAGS) −c $

.NS:
$ (FC) $ (FFLAGS) −c $

.yo:
$ (YACC) $ (YFLAGS) $
$ (CC) $ (CFLAGS) −c y.tab.c
rm −f y.tab.c
mv y.tab.o $ @

.lo:
$ (LEX) $ (LFLAGS) $
$ (CC) $ (CFLAGS) −c lex.yy.c
rm −f lex.yy.c
mv lex.yy.o $ @

.y C:
$ (YACC) $ (YFLAGS) $
mv y.tab.c $ @

.lc:
$ (LEX) $ (LFLAGS) $
mv lex.yy.c $ @

.c ~ .o:
$ (GET) $ (GFLAGS) −p $ <> $ *. C
$ (CC) $ (CFLAGS) −c $ *. C

.f ~ .o:
$ (GET) $ (GFLAGS) −p $ <> $ *. F
$ (FC) $ (FFLAGS) −c $ *. F

.y ~ .o:
$ (GET) $ (GFLAGS) −p $ <> $ *. Y
$ (YACC) $ (YFLAGS) $ *. Y
$ (CC) $ (CFLAGS) −c y.tab.c
rm −f y.tab.c
mv y.tab.o $ @

.l ~ .o:
$ (GET) $ (GFLAGS) −p $ <> $ *. L
$ (LEX) $ (LFLAGS) $ *. L
$ (CC) $ (CFLAGS) −c lex.yy.c
rm −f lex.yy.c
mv lex.yy.o $ @

.y ~ .c:
$ (GET) $ (GFLAGS) −p $ <> $ *. Y
$ (YACC) $ (YFLAGS) $ *. Y
mv y.tab.c $ @

.l ~ .c:
$ (GET) $ (GFLAGS) −p $ <> $ *. L
$ (LEX) $ (LFLAGS) $ *. L
mv lex.yy.c $ @

.ca:
$ (CC) −c $ (CFLAGS) $
$ (AR) $ (ARFLAGS) $ @ $ *. O
rm −f $ *. o

.fa:
$ (FC) −c $ (FFLAGS) $
$ (AR) $ (ARFLAGS) $ @ $ *. O
rm −f $ *. o

EXIT TÌNH TRẠNG


Khi −q tùy chọn được chỉ định, làm cho tiện ích sẽ thoát ra với một trong những điều sau
các giá trị:

0 Hoàn thành thành công.

1 Mục tiêu không được cập nhật.

> 1 Đã xảy ra lỗi.

Khi −q tùy chọn không được chỉ định, làm cho tiện ích sẽ thoát ra với một trong những điều sau
các giá trị:

0 Hoàn thành thành công.

> 0 Đã xảy ra lỗi.

HẬU QUẢ OF LRI


Mặc định.

Sản phẩm tiếp theo phần đang nhiều thông tin.

ỨNG DỤNG SỬ DỤNG


Nếu có một tệp nguồn (chẳng hạn như ./source.c) và có hai tệp SCCS tương ứng
với nó (./s.source.c./SCCS/s.source.c), trên các hệ thống tuân theo XSI làm cho sử dụng SCCS
tập tin trong thư mục hiện tại. Tuy nhiên, người dùng nên sử dụng SCCS cơ bản
tiện ích (quản trị viên, đồng bằng, được, v.v.) hoặc scc tiện ích cho tất cả các tệp nguồn trong một
thư mục đã cho. Nếu cả hai biểu mẫu được sử dụng cho một tệp nguồn nhất định, các nhà phát triển trong tương lai sẽ
rất có thể bị nhầm lẫn.

Nó có trách nhiệm dựa trên các cấu hình di động để chỉ định .POSIX mục tiêu đặc biệt để
đảm bảo rằng chúng không bị ảnh hưởng bởi các tiện ích mở rộng cục bộ.

Sản phẩm −k−S cả hai tùy chọn đều có mặt để mối quan hệ giữa dòng lệnh,
các LÀM CỜ biến, và makefile có thể được kiểm soát chính xác. Nếu k cờ là
thông qua tại LÀM CỜ và một lệnh có dạng:

$ (LÀM) −S foo

sau đó hành vi mặc định được khôi phục cho trẻ làm cho.

Khi −n tùy chọn được chỉ định, nó luôn được thêm vào LÀM CỜ. Điều này cho phép một đệ quy
làm cho −n mục tiêu được sử dụng để xem tất cả các hành động sẽ được thực hiện để cập nhật mục tiêu.

Do thực tiễn lịch sử phổ biến, việc giải thích một ('#') bên trong
biến khi bắt đầu nhận xét có tác dụng phụ đáng tiếc là làm cho nó không thể
để đặt một trong một biến, do đó cấm những thứ như:

CỜ = "−D COMMENT_CHAR = '#' "

Nhiều lịch sử làm cho các tiện ích ngừng xâu chuỗi các quy tắc suy luận với nhau khi một trung gian
mục tiêu là không tồn tại. Ví dụ, nó có thể có làm cho để xác định rằng cả hai
.y C.co có thể được sử dụng để chuyển đổi một .y đến một .o. Thay vào đó, trong trường hợp này, làm cho đòi hỏi
việc sử dụng một .yo qui định.

Cách tốt nhất để cung cấp các tệp trang điểm di động là bao gồm tất cả các quy tắc cần thiết trong
makefile chính nó. Các quy tắc được cung cấp chỉ sử dụng các tính năng được cung cấp bởi các phần khác của điều này
khối lượng của POSIX.1‐2008. Các quy tắc mặc định bao gồm các quy tắc cho các lệnh tùy chọn trong
khối lượng của POSIX.1‐2008. Chỉ các quy tắc liên quan đến các lệnh được cung cấp là cần thiết trong
bộ mặc định của triển khai.

Các macro được sử dụng trong các macro khác được đánh giá khi macro mới được sử dụng thay vì khi
macro mới được xác định. Vì vậy:

MACRO = giá trị1
Mới = $ (MACRO)
MACRO = giá trị2

Mục tiêu:
echo $ (MỚI)

sẽ sản xuất giá trị2 và không giá trị1 kể từ khi Mới không được mở rộng cho đến khi nó cần thiết trong
bỏ lỡ dòng lệnh.

Một số ứng dụng lịch sử đã được biết đến với intermix Tên mục tiêumacro = tên
toán hạng trên dòng lệnh, hy vọng rằng tất cả các macro được xử lý trước bất kỳ
các mục tiêu được xử lý. Các ứng dụng phù hợp không làm được điều này, mặc dù một số
hỗ trợ tương thích ngược có thể được bao gồm trong một số triển khai.

Các ký tự sau trong tên tệp có thể gây rắc rối: '=', ':', '', một dấu ngoặc kép, và
'@'. Bao gồm tên tệp, ký tự khớp mẫu và '' ' cũng nên tránh, vì
chúng có thể được coi là đặc biệt bởi một số triển khai.

Đối với các quy tắc suy luận, mô tả của $ <và $? có vẻ tương tự. Tuy nhiên, một ví dụ cho thấy
sự khác biệt nhỏ. Trong một makefile có chứa:

foo.o: foo.h

if foo.h mới hơn foo.o, Nhưng foo.c nó cũ hơn foo.o, quy tắc tích hợp để thực hiện
foo.o từ foo.c được sử dụng, với $ <bằng foo.c và $? tương đương với foo.h. Nếu foo.c cũng là
mới hơn foo.o, $ <bằng foo.c và $? bằng foo.h foo.c.

VÍ DỤ


1. Lệnh sau:

làm cho

làm cho mục tiêu đầu tiên được tìm thấy trong makefile.

2. Lệnh sau:

làm cho rác

làm mục tiêu rác.

3. Makefile sau nói rằng pgm phụ thuộc vào hai tệp, áo dàibovà họ
lần lượt phụ thuộc vào các tệp nguồn tương ứng của chúng (ACbc), và một tệp chung
bao gồm.h:

trang: áo dài bo
c99 áo dài bo −o pgm
ao: bao gồm.h AC
c99 −c AC
bo: bao gồm.h bc
c99 −c bc

4. Một ví dụ để tối ưu hóa .o tập tin từ .c tệp là:

.co:
c99 −c −O $ *. c

hoặc:

.co:
c99 −c −O $<

5. Cách sử dụng phổ biến nhất của giao diện lưu trữ sau đây. Ở đây, người ta giả định rằng
các tệp nguồn đều là nguồn ngôn ngữ C:

thư viện: lib (file1.o) lib (file2.o) lib (file3.o)
@echo lib is tại up-to-date

Sản phẩm .ca quy tắc được sử dụng để thực hiện tập tin1.o, tập tin2.otập tin3.o và chèn chúng vào lib.

Xử lý trốn thoát các nhân vật trong suốt makefile là lịch sử
thực hành. Ví dụ, quy tắc suy luận:

.co \
:

hoạt động và macro:

f= thanh baz \
biz
a:
bỏ lỡ == $ f ==

tiếng vang "== thanh căn cứ biz == ".

Nếu $? là:

/usr/include/stdio.h /usr/include/unistd.h foo.h

thì $ (? D) sẽ là:

/ usr / bao gồm / usr / bao gồm .

và $ (? F) sẽ là:

stdio.h unistd.h foo.h

6. Có thể xem nội dung của các quy tắc cài sẵn bằng cách chạy:

làm cho −p −f / dev / null 2> / dev / null

CƠ SỞ LÝ LUẬN


Sản phẩm làm cho tiện ích được mô tả trong tập POSIX.1‐2008 này nhằm cung cấp các phương tiện
để thay đổi mã nguồn di động thành các tệp thực thi có thể chạy trên
Hệ thống tuân theo POSIX.1‐2008. Nó phản ánh các tính năng phổ biến nhất hiện có trong Hệ thống V
và BSD làm chos.

Trong lịch sử, làm cho tiện ích đã là một mảnh đất đặc biệt màu mỡ cho các nhà cung cấp và
nghiên cứu các sửa đổi và mở rộng cú pháp cụ thể của tổ chức. Những ví dụ bao gồm:

* Cú pháp hỗ trợ thực thi song song (chẳng hạn như từ các nhà cung cấp đa bộ xử lý khác nhau,
GNU và những người khác)

* Bổ sung `` toán tử '' tách mục tiêu và điều kiện tiên quyết của chúng (Hệ thống V, BSD,
và những người khác)

* Chỉ định các dòng lệnh có chứa các chuỗi "$ {MAKE}""$ (MAKE)" đang
thực hiện khi −n tùy chọn được chỉ định (GNU và Hệ thống V)

* Các sửa đổi về ý nghĩa của các macro nội bộ khi tham chiếu đến các thư viện (BSD và
khác)

* Sử dụng một phiên bản shell duy nhất cho tất cả các dòng lệnh của mục tiêu (BSD
và những người khác)

* Cho phép các nhân vật cũng như ký tự để phân tách các dòng lệnh (BSD)

* Thêm cấu trúc kiểu tiền xử lý C `` bao gồm '' và `` ifdef '' (Hệ thống V, GNU, BSD,
và những người khác)

* Thực hiện từ xa các dòng lệnh (Sprite và các dòng khác)

* Chỉ định các mục tiêu đặc biệt bổ sung (BSD, Hệ thống V và hầu hết các mục tiêu khác)

Ngoài ra, nhiều nhà cung cấp và tổ chức nghiên cứu đã suy nghĩ lại các khái niệm cơ bản về
làm cho, tạo ra các cú pháp được mở rộng rộng rãi, cũng như hoàn toàn mới. Mỗi người trong số này
phiên bản của làm cho đáp ứng nhu cầu của một cộng đồng người dùng khác nhau; nó là không hợp lý
đối với khối lượng POSIX.1‐2008 này để yêu cầu hành vi sẽ không tương thích (và
có lẽ kém hơn) so với thực tiễn lịch sử cho một cộng đồng như vậy.

Trong những trường hợp tương tự, khi ngành có đủ định dạng không tương thích
để làm cho chúng không thể hòa hợp, tập POSIX.1‐2008 này đã theo sau một hoặc cả hai
hai khóa học của hành động. Các lệnh đã được đổi tên (cksum, bỏ lỡkhách) và / hoặc lệnh
các tùy chọn dòng đã được cung cấp để chọn hành vi mong muốn (grep, odkhách).

Bởi vì cú pháp được chỉ định cho làm cho tiện ích nói chung là một tập hợp con của
các cú pháp được chấp nhận bởi hầu hết các phiên bản của làm cho, nó đã được quyết định rằng nó sẽ chống lại-
hiệu quả để thay đổi tên. Và vì bản thân makefile là một đơn vị cơ bản của
tính di động, sẽ không hoàn toàn hiệu quả nếu đặt trước một thư tùy chọn mới, chẳng hạn như
làm cho −P, để đạt được hành vi di động. Do đó, mục tiêu đặc biệt .POSIX đã được thêm vào
vào makefile, cho phép người dùng chỉ định hành vi `` chuẩn ''. Mục tiêu đặc biệt này không
không loại trừ các phần mở rộng trong làm cho tiện ích, cũng như không loại trừ các tiện ích mở rộng đó là
được sử dụng bởi makefile chỉ định đích; Tuy nhiên, nó loại trừ bất kỳ phần mở rộng nào từ
được áp dụng có thể thay đổi hành vi của cú pháp hợp lệ trước đó; những phần mở rộng như vậy
phải được điều khiển thông qua các tùy chọn dòng lệnh hoặc các mục tiêu đặc biệt mới. Nó là đương nhiệm
cấu hình di động để chỉ định .POSIX mục tiêu đặc biệt để đảm bảo rằng họ
không bị ảnh hưởng bởi các tiện ích mở rộng cục bộ.

Phiên bản di động của làm cho được mô tả trong trang tham chiếu này không nhằm mục đích
công cụ tạo phần mềm hiện đại và, như vậy, một số mới hơn và tiên tiến hơn
các tính năng chưa được bao gồm. Một nỗ lực đã được thực hiện để mô tả thiết bị di động
makefile theo cách không loại trừ các phần mở rộng như vậy miễn là chúng không làm phiền
hành vi di động được mô tả ở đây.

Khi −n tùy chọn được chỉ định, nó luôn được thêm vào LÀM CỜ. Điều này cho phép một đệ quy
làm cho −n mục tiêu được sử dụng để xem tất cả các hành động sẽ được thực hiện để cập nhật mục tiêu.

Định nghĩa của LÀM CỜ cho phép cả chuỗi ký tự System V và lệnh BSD
các định dạng dòng. Hai định dạng đủ khác nhau để cho phép triển khai
hỗ trợ cả hai mà không mơ hồ.

Các đề xuất ban đầu tuyên bố rằng một `` không được trích dẫn '' được coi là sự khởi đầu của một
bình luận. Các làm cho tiện ích không chú ý đến bất kỳ báo giá. MỘT bắt đầu một
bình luận bất kể môi trường xung quanh nó.

Ngoài
./makefile./makefile là cho phép các tiện ích mở rộng như SCCS / s.Makefile và khác
các biến thể. Nó đã được thực hiện một yêu cầu do triển khai xác định (trái ngược với không xác định
hành vi) để làm nổi bật các triển khai đáng ngạc nhiên có thể chọn một cái gì đó không mong đợi
Lượt thích / etc / Makefile. Các hệ thống tuân theo XSI cũng thử ./s.makefile, SCCS / s.makefile,
./s.MakefileSCCS / s.Makefile.

Các đề xuất ban đầu chứa macro NPROC như một phương tiện để xác định điều đó làm cho nên sử dụng n
các quy trình để thực hiện công việc được yêu cầu. Mặc dù tính năng này là một tiện ích mở rộng có giá trị đối với nhiều
hệ thống, nó không phải là cách sử dụng phổ biến và có thể yêu cầu các phần mở rộng không tầm thường khác để tạo tệp
cú pháp. Phần mở rộng này không được yêu cầu bởi tập POSIX.1‐2008 này, nhưng có thể
được cung cấp như một phần mở rộng tương thích. Macro SONG SONG, TƯƠNG ĐÔNG được sử dụng bởi một số hệ thống lịch sử
về cơ bản có cùng ý nghĩa (nhưng không sử dụng tên là giới hạn chung của hệ thống
giá trị). Người triển khai đề xuất rằng việc sử dụng hiện tại của NPROC và / hoặc
SONG SONG, TƯƠNG ĐÔNG dưới dạng phần mở rộng cho làm cho.

Các quy tắc mặc định dựa trên Hệ thống V. CC = giá trị là c99 thay vì cc
bởi vì khối lượng này của POSIX.1‐2008 không chuẩn hóa tiện ích có tên cc. Vì vậy,
mọi ứng dụng tuân thủ sẽ được yêu cầu để xác định CC =c99 để mong đợi để chạy. Có
không có lợi thế nào được trao bởi hy vọng rằng makefile có thể đạt được trình biên dịch `` ưa thích ''
bởi vì điều này không thể được đảm bảo để làm việc. Ngoài ra, vì phiên bản di động chỉ có thể
sử dụng c99 tùy chọn, không có lợi thế nào được trao cho những gì script có thể làm. Nó là
một vấn đề về chất lượng triển khai như liệu c99 có giá trị như cc.

Sản phẩm −d tùy chọn để làm cho thường được sử dụng để tạo thông tin gỡ lỗi, nhưng cũng
triển khai được xác định để thêm vào khối lượng này của POSIX.1‐2008.

Sản phẩm −p tùy chọn không được thông qua LÀM CỜ trên hầu hết các triển khai lịch sử và để thay đổi
điều này sẽ khiến nhiều triển khai bị hỏng nếu không được tăng đủ tính di động.

Các lệnh bắt đầu bằng ('+') được thực thi ngay cả khi −n Tùy chọn là
Món quà. Dựa trên phiên bản GNU của làm cho, hành vi của −n khi mà tiếp đầu ngữ
gặp phải đã được mở rộng để áp dụng cho −q−t cũng. Tuy nhiên, Hệ thống V
quy ước buộc thực hiện lệnh với −n khi dòng lệnh của mục tiêu chứa
một trong hai chuỗi "$ (MAKE)" or "$ {MAKE}" đã không được thông qua. Chức năng này
đã xuất hiện trong các đề xuất ban đầu, nhưng nguy cơ của cách tiếp cận này đã được chỉ ra với
ví dụ sau về một phần của makefile:

tiểu thư:
cd người phụ nữ; rm tất cả các tệp tin; $ (LÀM)

Sự mất mát của hành vi Hệ thống V trong trường hợp này được cân bằng tốt bởi sự an toàn dành cho
các trang điểm khác không nhận thức được tình huống này. Trong mọi trường hợp, dòng lệnh
tiền tố có thể cung cấp chức năng mong muốn.

Đôi ở định dạng quy tắc đích được hỗ trợ trong hệ thống BSD để cho phép nhiều hơn
hơn một dòng mục tiêu chứa cùng tên mục tiêu để có các lệnh được liên kết với nó.
Vì đây không phải là chức năng được mô tả trong SVID hoặc XPG3 nên nó đã được phép như một
mở rộng, nhưng không bắt buộc.

Các quy tắc mặc định được cung cấp với văn bản chỉ định rằng các quy tắc tích hợp sẽ là
giống như nếu tập hợp được liệt kê đã được sử dụng. Mục đích là việc triển khai phải có thể
sử dụng các quy tắc mà không cần thay đổi, nhưng sẽ được phép thay đổi chúng theo những cách không ảnh hưởng đến
các hành vi chính.

Cách tốt nhất để cung cấp các tệp trang điểm di động là bao gồm tất cả các quy tắc cần thiết trong
makefile chính nó. Các quy tắc được cung cấp chỉ sử dụng các tính năng được cung cấp bởi các phần khác của điều này
khối lượng của POSIX.1‐2008. Các quy tắc mặc định bao gồm các quy tắc cho các lệnh tùy chọn trong
khối lượng của POSIX.1‐2008. Chỉ các quy tắc liên quan đến các lệnh được cung cấp là cần thiết trong
tập hợp mặc định của một triển khai.

Một điểm thảo luận là liệu có nên bỏ danh sách quy tắc mặc định khỏi tập này của
POSIX.1‐2008. Chúng mang lại sự tiện lợi, nhưng không nâng cao tính di động của các ứng dụng.
Lợi ích chính là tính di động của người dùng muốn nhập làm cho lệnh và có
lệnh xây dựng từ một lệnh.c tập tin.

Lịch sử KIẾM TIỀN tính năng đã bị bỏ qua. Trong một số triển khai, nó được sử dụng để cho phép
người dùng ghi đè shell sẽ được sử dụng để chạy làm cho các lệnh. Điều này thật khó hiểu; cho một
di động làm cho, shell nên được chọn bởi người viết makefile hoặc được chỉ định trên làm cho
dòng lệnh chứ không phải do người dùng chạy làm cho.

Sản phẩm làm cho các tiện ích trong hầu hết các triển khai lịch sử xử lý các điều kiện tiên quyết của một
nhắm mục tiêu theo thứ tự từ trái sang phải và định dạng makefile yêu cầu điều này. Nó hỗ trợ
thành ngữ tiêu chuẩn được sử dụng trong nhiều trang điểm sản xuất yac các chương trình; Ví dụ:

foo: y.tab.o lex.o chính.o
$ (CC) $ (CFLAGS) −o $@ t.tab.o lex.o chính.o

Trong ví dụ này, nếu làm cho đã chọn bất kỳ thứ tự tùy ý nào, lex.o có thể không được thực hiện với
sửa chữa y.tab.h. Mặc dù có thể có nhiều cách tốt hơn để thể hiện mối quan hệ này, nhưng
được sử dụng rộng rãi trong lịch sử. Các triển khai mong muốn cập nhật các điều kiện tiên quyết song song
nên yêu cầu một phần mở rộng rõ ràng để làm cho hoặc định dạng makefile để hoàn thành nó, như
đã được miêu tả ở trên.

Thuật toán xác định mục nhập mới cho các quy tắc đích một phần không được xác định. Một vài
lịch sử làm chos cho phép dòng trống, dòng trống hoặc dòng chú thích trong tập hợp các lệnh
được đánh dấu bởi hàng đầu nhân vật. Makefile phù hợp phải đảm bảo rằng mỗi lệnh
bắt đầu bằng một , nhưng việc triển khai có thể tự do bỏ qua trống, trống và nhận xét
dòng mà không kích hoạt sự bắt đầu của một mục mới.

Phần SỰ KIỆN HẤP DẪN bao gồm có SIGTERM và SIGHUP, cùng với nhiều hơn nữa
SIGINT và SIGQUIT truyền thống, loại bỏ mục tiêu hiện tại trừ khi được hướng dẫn không làm như vậy.
SIGTERM và SIGHUP đã được thêm vào song song với các tiện ích khác đã được làm sạch trước đây
công việc của họ là kết quả của những tín hiệu này. Khi nào làm cho nhận bất kỳ tín hiệu nào khác ngoài
SIGQUIT, nó được yêu cầu gửi lại chính tín hiệu mà nó nhận được để nó thoát ra với
trạng thái phản ánh tín hiệu. Các kết quả từ SIGQUIT không được xác định một phần
bởi vì, trên các hệ thống tạo cốt lõi khi nhận được SIGQUIT, cốt lõi từ làm cho
sẽ xung đột với một cốt lõi tệp từ lệnh đang chạy khi SIGQUIT
đã đến. Mối quan tâm chính là ngăn các tệp bị hỏng xuất hiện được cập nhật khi làm cho
đang chạy lại.

Sản phẩm .QUÝ GIÁ mục tiêu đặc biệt đã được mở rộng để ảnh hưởng đến tất cả các mục tiêu trên toàn cầu (bằng cách chỉ định không
điều kiện tiên quyết). Các .PHỚT LỜ.IM LẶNG các mục tiêu đặc biệt đã được mở rộng để cho phép
điều kiện tiên quyết; nó được đánh giá là hữu ích hơn trong một số trường hợp để có thể tắt các lỗi
hoặc lặp lại cho một danh sách các mục tiêu hơn là cho toàn bộ makefile. Các phần mở rộng này cho làm cho in
Hệ thống V được thực hiện để phù hợp với thông lệ lịch sử từ BSD làm cho.

Macro không được xuất sang môi trường của các lệnh sẽ được chạy. Đây không bao giờ là trường hợp
trong bất kỳ lịch sử nào làm cho và sẽ có hậu quả nghiêm trọng. Môi trường giống như
môi trường để làm cho ngoại trừ việc LÀM CỜ và macro được xác định trên làm cho dòng lệnh
được thêm.

Một số triển khai không sử dụng hệ thống() cho tất cả các dòng lệnh, theo yêu cầu của
định dạng makefile di động; để nâng cao hiệu suất, họ chọn các dòng không có vỏ
siêu ký tự để thực hiện trực tiếp bởi thi hành(). Không có yêu cầu hệ thống() thì là ở
được sử dụng cụ thể, nhưng chỉ đơn thuần là đạt được kết quả tương tự. Các siêu nhân vật
thường được sử dụng để bỏ qua trực tiếp thi hành() thực hiện là bất kỳ trong số:

= | ^ ( ) ; & < > * ? [ ] : $ ` ' " \ \n

Giá trị mặc định trong một số phiên bản nâng cao của làm cho là nhóm tất cả các dòng lệnh cho một
nhắm mục tiêu và thực thi chúng bằng cách sử dụng một lệnh gọi shell; phương thức System V là vượt qua
từng dòng riêng lẻ đến một vỏ riêng biệt. Phương pháp một lớp vỏ có những ưu điểm trong
hiệu suất và thiếu yêu cầu cho nhiều dòng tiếp tục. Tuy nhiên, chuyển đổi thành
phương pháp mới hơn này đã gây ra các vấn đề về tính di động với nhiều cấu hình lịch sử, vì vậy
hành vi với tệp trang điểm POSIX được chỉ định giống với hành vi của Hệ thống V. Nó là
đề xuất rằng mục tiêu đặc biệt .ONESHELL được sử dụng như một phần mở rộng triển khai để
đạt được phân nhóm đơn vỏ cho một mục tiêu hoặc một nhóm mục tiêu.

Người dùng mới làm quen với làm cho gặp khó khăn với nhu cầu lịch sử để bắt đầu các lệnh bằng
. Vì thường rất khó phân biệt sự khác biệt giữa và
các ký tự trên thiết bị đầu cuối hoặc danh sách in, lỗi khó hiểu có thể phát sinh. Trong các đề xuất ban đầu,
một nỗ lực đã được thực hiện để khắc phục sự cố này bằng cách cho phép ký tự thay thế
của nhân vật. Tuy nhiên, những người thực hiện đã báo cáo nhiều cấu hình không thành công
các cách sau thay đổi này và rất khó để triển khai làm cho điều đó rõ ràng có thể
phân biệt giữa macro và dòng lệnh. Có một thực tiễn lịch sử sâu rộng về
cho phép dẫn đầu ký tự trước định nghĩa macro. Buộc các dòng macro vào
cột 1 sẽ là một vấn đề tương thích ngược đáng kể đối với một số cấu hình.
Do đó, thực tiễn lịch sử đã được phục hồi.

Có sự thay đổi đáng kể trong việc xử lý các dòng bao gồm theo các
triển khai. Tuy nhiên, có đủ điểm chung cho tiêu chuẩn để có thể
chỉ định một tập hợp các yêu cầu tối thiểu cho phép sử dụng tính năng một cách linh hoạt. Đã biết
các biến thể đã được gọi một cách rõ ràng là hành vi không xác định trong mô tả.

Tính năng phụ thuộc động của Hệ thống V không được bao gồm. Nó sẽ hỗ trợ:

con mèo: [email được bảo vệ]

điều đó sẽ mở rộng thành;

con mèo: con mèo.c

Tính năng này chỉ tồn tại trong phiên bản mới của Hệ thống V làm cho và, trong khi hữu ích, không có trong
sử dụng rộng rãi. Điều này có nghĩa là macro được mở rộng hai lần cho các điều kiện tiên quyết: một lần tại makefile
thời gian phân tích cú pháp và một lần tại thời điểm cập nhật mục tiêu.

Đã xem xét việc thêm các siêu đại diện vào POSIX làm cho. Điều này sẽ làm cho % .o: %.C
giống như .co:. Điều này khá hữu ích và có sẵn từ một số nhà cung cấp, nhưng nó sẽ
gây ra quá nhiều thay đổi đối với điều này làm cho hỗ trợ. Nó sẽ giới thiệu chuỗi quy tắc và
quy tắc thay thế mới. Tuy nhiên, các quy tắc cho tên mục tiêu đã được đặt để dành riêng
'%''' ' nhân vật. Theo truyền thống, chúng được sử dụng để triển khai các metarules và trích dẫn
tên mục tiêu, tương ứng. Người thực hiện được khuyến khích sử dụng các ký tự này
chỉ cho những mục đích này.

Một yêu cầu đã được thực hiện để mở rộng ký tự phân cách hậu tố từ một cho bất kỳ
tính cách. Tính năng metarules trong phiên bản mới hơn làm chos giải quyết vấn đề này theo một cách tổng quát hơn.
Tập POSIX.1‐2008 này vẫn giữ nguyên định nghĩa lịch sử thận trọng hơn.

Định dạng đầu ra tiêu chuẩn cho −p tùy chọn không được mô tả vì nó chủ yếu là
tùy chọn gỡ lỗi và vì định dạng thường không hữu ích cho các chương trình. Trong lịch sử
triển khai đầu ra không phù hợp để sử dụng trong việc tạo các tệp trang điểm. Các −p định dạng
đã được thay đổi trên các triển khai lịch sử. Do đó, định nghĩa của −p
chỉ để cung cấp một tùy chọn được đặt tên nhất quán để đạt được làm cho gỡ lỗi tập lệnh
thông tin.

Một số triển khai lịch sử chưa xóa danh sách hậu tố với −r.

Việc triển khai cần lưu ý rằng một số ứng dụng lịch sử đã trộn lẫn
Tên mục tiêuvĩ mô=giá trị toán hạng trên dòng lệnh, mong đợi rằng tất cả các macro
được xử lý trước khi xử lý bất kỳ mục tiêu nào. Các ứng dụng phù hợp không làm
điều này, nhưng một số hỗ trợ tương thích ngược có thể được đảm bảo.

Các quy tắc suy luận rỗng được chỉ định bằng một ra lệnh thay vì bỏ qua tất cả
các lệnh, như được mô tả trong một đề xuất ban đầu. Trường hợp thứ hai không có nghĩa truyền thống
và được dành riêng cho các phần mở rộng triển khai, chẳng hạn như trong GNU làm cho.

TƯƠNG LAI HƯỚNG DẪN


Không có.

Sử dụng makeposix trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

Ad