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

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

hình dạng - Trực tuyến trên đám mây

Chạy hình trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là dạng lệnh có thể 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 mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


hình dạng - xác định và xây dựng cấu hình chương trình từ các phiên bản của đối tượng nguồn

SYNOPSIS


định hình
[ -f <mô tả tập tin> ]
[ -R <version lựa chọn quy tắc> ] [ -V <variant tên> ]
[ -tiếng vang <macro tên> ] [ -lực lượng ] [ -xây dựng lại ]
[ - dDehiknprs ]
[ -bct ] [ -Cứu giúp ] [ -nomsg ] [ -novclass ] [ -phiên bản ] [ -xpoff ] [ -xpon ]
[ mục tiêu1 mục tiêu2 ... ] [ vĩ mô=giá trị ... ] [ vĩ mô+=giá trị ... ]

MÔ TẢ


Hình dạng cho phép biên dịch một cách minh bạch các đối tượng nguồn là các tệp thông thường hoặc
đối tượng nguồn phiên bản trong cơ sở đối tượng phiên bản ShapeTools. Tổng quát hơn, hình dạng
sản xuất một bộ nguồn gốc đối tượng (``mục tiêu'') từ các phiên bản được chọn phù hợp của
các đối tượng nguồn tương ứng theo mô tả về sự phụ thuộc giữa
các đối tượng. Hình dạng theo dõi các tham số liên quan cho các phần tổng hợp (phiên bản nguồn,
phiên bản trình biên dịch, công tắc trình biên dịch, v.v.) và do đó cung cấp một bản dựng an toàn và hiệu quả
máy móc.

Khi hình dạng biên dịch các đối tượng nguồn, nó lưu trữ các đối tượng dẫn xuất kết quả cùng với
các tham số biên dịch hiệu quả trong nó nguồn gốc vật bộ nhớ cache. Trước khi dẫn xuất
quá trình cho một đối tượng được yêu cầu thực sự được bắt đầu, hình dạng cố gắng tìm một đối tượng hiện có
đối tượng dẫn xuất phù hợp với yêu cầu của mục tiêu, trong bộ đệm đối tượng dẫn xuất.
Bộ nhớ đệm và khôi phục các đối tượng có nguồn gốc từ các phiên bản bất biến cho phép
các nhà phát triển để thu lợi từ các bản dựng trước của các thành viên khác trong nhóm. Tổng chi phí tổng hợp trong
dự án giảm đáng kể.

Khi cung cấp một yêu cầu xây dựng, hình dạng sẽ xem xét một số lượng lớn các phiên bản
được lưu trữ cho một đối tượng. Phiên bản cụ thể nào là ràng buộc đến tên của một đối tượng trong
tập tin mô tả, được xác định bởi phiên bản lựa chọn quy tắc.

Hình dạng có thể quản lý song song các bản dựng của các biến thể khác nhau của một hệ thống. Hình dạng sử dụng
tiềm năng kết hợp của việc lựa chọn phiên bản động, xác định lại macro động và dẫn xuất
quản lý đối tượng để xử lý các bản dựng biến thể. Như hầu hết - nếu không phải tất cả - các đối tượng và
các tham số liên quan đến bản dựng được định nghĩa là macro, hình dạng cung cấp rất nhiều
linh hoạt bằng cách cho phép thay đổi một số hoặc tất cả các macro một cách linh hoạt, tùy thuộc vào
biến thể sẽ được xây dựng. Khái niệm của biến thể định nghĩa trong tập tin mô tả của hình dạng
cung cấp một tiêu điểm rõ ràng cho tất cả các định nghĩa có liên quan đến một biến thể nhất định.

LỰA CHỌN


-f <mô tả tập tin>
định hình sử dụng đối số được cung cấp làm tên của tệp mô tả sẽ được sử dụng cho
xây dựng. Nếu không -f tùy chọn được chỉ định, hình dạng sẽ cố gắng tìm tệp mô tả trong
một trong các tên ``Shapefile'', ``shapefile'', ``Makefile'', và ``makefile'' (từ
trái sang phải). Nếu không tìm thấy tập tin thông thường nào có một trong những tên này, nhưng
phiên bản của các tệp tương ứng có sẵn trong cơ sở đối tượng phiên bản, hình dạng sẽ
sử dụng phiên bản mới nhất. Khi có nhiều hơn một -f <mô tả tập tin> đối số
cặp xuất hiện, hình sẽ lần lượt đọc từng tệp mô tả. Nếu tên của
tập tin mô tả được chỉ định là ``-'', hình dạng sẽ đọc mô tả hệ thống từ
đầu vào tiêu chuẩn. Có thể chỉ định tệp mô tả trong phiên bản ràng buộc
ký hiệu, ví dụ Tệp hình dạng [2.8] or Shapefile[Release4] (xem vbind(1) để biết chi tiết
về ký hiệu phiên bản bị ràng buộc).

-R <selection loại trừ tên>
kích hoạt quy tắc lựa chọn đã chỉ định làm ràng buộc phiên bản ban đầu cho nguồn
các đối tượng. Nếu -R tùy chọn hiện diện và quy tắc lựa chọn được xác định là tùy chọn đầu tiên
sự phụ thuộc của mục tiêu đầu tiên, hình dạng sẽ sử dụng quy tắc lựa chọn được truyền qua
dòng lệnh và bỏ qua việc kích hoạt quy tắc lựa chọn đầu tiên (và duy nhất)
trong tập tin mô tả. Tùy chọn này hữu ích để ghi đè mặc định ban đầu
quy tắc lựa chọn, được chỉ định trong tệp mô tả, từ dòng lệnh.

-V <variant tên>
kích hoạt biến thể được chỉ định bởi <variant tên>. Một số biến thể có thể
được kích hoạt đồng thời từ dòng lệnh bằng cách chỉ định -V tùy chọn nhiều
lần. Tất cả các định nghĩa cụ thể của biến thể sẽ có hiệu lực ngay khi hình dạng đọc
định nghĩa biến thể tương ứng trong tệp mô tả.

-lực lượng
buộc phải xây dựng mục tiêu đã chỉ định một cách vô điều kiện, tức là ngay cả khi
phù hợp, đối tượng xây dựng trước đó tồn tại.

-tiếng vang <macro tên>
giá trị của vĩ mô <macro tên> được ghi vào đầu ra tiêu chuẩn. Tùy chọn này là
hữu ích để trích xuất thông tin từ tệp mô tả hệ thống (ví dụ: hình dạng -echo
NGUỒN, hoặc hình dạng -echo SUBSYSTEMS), hoặc để kiểm soát hiệu ứng của biến thể
các hoạt động.

-xây dựng lại
cố gắng xây dựng lại chính xác mục tiêu theo một ràng buộc cấu hình Chủ đề,
được cung cấp trong một tập tin có tên .bct (xem mô tả của -bct chuyển).

-d chạy hình ở chế độ gỡ lỗi. In ra thông tin chi tiết về sự phụ thuộc của đối tượng
và các thuộc tính.

-D in thông tin chi tiết về quy trình liên kết phiên bản và lý do hình dạng
liên quan đến việc xây dựng (lại) các mục tiêu hoặc truy xuất từ ​​bộ đệm đối tượng dẫn xuất. Cái này
switch rất hữu ích để tìm hiểu lý do chính xác, tại sao hình dạng lại chuyển hướng mục tiêu
(hay không).

-e định nghĩa macro được nhập từ môi trường (xem mô tả về
vĩ mô đặc biệt NHẬP KHẨU, bên dưới) ghi đè các định nghĩa macro trong tệp mô tả (bằng cách
mặc định, định nghĩa macro trong tệp mô tả được ưu tiên hơn nhập
từ môi trường).

-h in thông tin sử dụng trên đầu ra tiêu chuẩn (đây là tên viết tắt của -Cứu giúp
chuyển đổi, xem bên dưới).

-i bỏ qua các mã lỗi được trả về bởi các lệnh.

-k khi lệnh gọi ra trả về trạng thái lỗi khác 0, công việc trên
mục tiêu hiện tại bị bỏ rơi nhưng hình dạng vẫn tiếp tục với các nhánh khác không
phụ thuộc vào mục tiêu thất bại.

-n không có chế độ thực hiện. Hình dạng in ra các lệnh nhưng không thực thi chúng. Thậm chí
dòng lệnh bắt đầu bằng @ được in. Nếu lệnh chứa macro $(MAKE)
tuy nhiên, tham chiếu, dòng đó luôn được thực thi để cho phép theo dõi
quá trình xây dựng đệ quy.

-p in ra bộ đầy đủ các định nghĩa macro, mô tả mục tiêu và quy tắc
định nghĩa tương ứng.

-r không sử dụng các quy tắc tiềm ẩn có sẵn của hình dạng. Các quy tắc ngầm định được xác định trong
tập tin mô tả vẫn có hiệu lực.

-s chạy ở chế độ im lặng. Hình dạng không in ra các lệnh trước khi thực hiện chúng.

-bct ghi lại bản dựng trong một ràng buộc cấu hình Chủ đề tài liệu. Một chủ đề cấu hình hình dạng
chứa các định nghĩa chính xác về tất cả các phiên bản nguồn, các phần phụ thuộc của chúng,
các công cụ liên quan và các tùy chọn liên quan có hiệu lực cho bản dựng. Các
luồng cấu hình cho mục tiêu cấp cao nhất được tạo ra (mục tiêu đầu tiên trong
tệp mô tả hoặc mục tiêu được yêu cầu từ dòng lệnh) được lưu trữ trong một tệp
tên .bct. Các luồng cấu hình bị ràng buộc có thể được sử dụng làm đầu vào cho việc xây dựng lại
(xem tùy chọn -xây dựng lại, bên trên). Nếu bối cảnh phiên bản nguồn của bct-build là
không an toàn, hình dạng sẽ ghi lại thông tin đó vào bct và đưa ra thông báo cảnh báo.

-Cứu giúp in thông tin sử dụng trên đầu ra tiêu chuẩn.

-nomsg tắt cơ sở theo dõi msg trong quy tắc lựa chọn phiên bản.

-novclass
vô hiệu hóa việc kiểm tra tính không tương thích của các biến thể được kích hoạt.

-phiên bản
in nhận dạng phiên bản của chương trình hình dạng.

-xpoff tắt mở rộng thuộc tính trong các phiên bản nguồn được lấy từ cơ sở đối tượng. Qua
mặc định, mở rộng thuộc tính được bật cho tất cả các đối tượng nguồn trực tiếp
được lấy từ cơ sở đối tượng và tắt đối với các đối tượng nguồn thường xuyên
tập tin (xem quay trở lại(1) để biết chi tiết về việc mở rộng thuộc tính).

-xpon bật mở rộng thuộc tính cho tất cả các đối tượng nguồn, ngay cả trong các tệp thông thường. Qua
mặc định, tính năng mở rộng thuộc tính bị tắt đối với các đối tượng nguồn thông thường
các tệp và được bật cho tất cả các đối tượng nguồn được truy xuất trực tiếp từ
cơ sở đối tượng.

mục tiêu ...
Danh sách tên mục tiêu có thể được chuyển để định hình thông qua dòng lệnh. Nếu không có mục tiêu
được đưa ra trên dòng lệnh và mục tiêu đặc biệt .DEFAULT không được xác định trong
tệp mô tả, hình dạng sẽ cố gắng tạo ra mục tiêu đầu tiên được xác định trong
tập tin mô tả.

<macro định nghĩa>
Có thể xác định hoặc sửa đổi macro trong tệp mô tả từ lệnh
đường kẻ. Macro được xác định theo cách này được ưu tiên hơn tất cả các định nghĩa khác.
Định nghĩa macro dòng lệnh có một trong hai dạng:

TÊN = GIÁ TRỊ

TÊN + = GIÁ TRỊ

với TÊN là một từ và VALUE một chuỗi tùy ý. Nếu như VALUE chứa khoảng trắng, tạo
chắc chắn để trích dẫn nó. Dạng đầu tiên của bộ định nghĩa macro dòng lệnh TÊN đến
thay thế VALUE . Nếu VALUE trống, macro được đặt lại. Hình thức thứ hai nối thêm VALUE
với một ký tự khoảng trắng ở đầu hiện hành thay thế of TÊN. Hiện tại
sự thay thế có thể được xác định trong tệp mô tả hoặc bằng cài đặt trước đó trên
dòng lệnh. Để biết chi tiết về ngữ nghĩa của các định nghĩa và thay thế macro, hãy xem
các phần tương ứng dưới đây.

MÔ TẢ CÁC TẬP TIN


Hoạt động của hình dạng được điều khiển bởi một tệp mô tả hệ thống (thường là một makefile)
cung cấp thông tin cấu trúc về hệ thống được quản lý. Khác với làm cho(1),
hình dạng hoạt động trên ATFS (Atcống nạp Fs System), một kho lưu trữ các đối tượng được phiên bản,
thay vì các tập tin đơn giản. Vì vậy, các tập tin mô tả hình dạng chính hãng (thường được gọi là tệp hình dạng)
quy tắc lựa chọn phiên bản tính năng và định nghĩa biến thể ngoài Makefile tiêu chuẩn
quy luật phụ thuộc. Tệp mô tả của hình dạng là phần mở rộng tương thích hướng lên trên của làm cho(1) của
tệp mô tả, Makefile. Một quy ước cấu trúc hữu ích cho việc mô tả hình dạng
files là để duy trì song song Makefile và Shapefile. Chỉ có hình thật
các cấu trúc (chẳng hạn như quy tắc lựa chọn phiên bản hoặc định nghĩa biến thể) được lưu giữ trong
tệp hình dạng, trong khi phần lớn các định nghĩa macro và quy tắc đích được lưu giữ trong makefile. Các
Makefile sẽ là bao gồm in tệp hình dạng (xem mô tả của bao gồm chỉ thị dưới đây).
Quy ước cấu trúc này có ưu điểm là các chương trình được phát triển với
hỗ trợ của hệ thống ShapeTools có thể được chuyển dưới dạng phân phối nguồn tới các trang web không
sử dụng ShapeTools.

Mặc dù hình dạng phần lớn tương thích hướng xuống với chương trình tạo ban đầu, nhưng nó phải
lưu ý rằng một số phần mở rộng phổ biến của chương trình tạo ban đầu, chẳng hạn như GNU Make hoặc
Sun Make, cung cấp tính năng không hiện diện dưới dạng hình dạng. Xem phần đã biết
sự không tương thích dưới đây.

Tệp mô tả cung cấp cơ sở thông tin trung tâm lý tưởng cho tất cả các loại sản phẩm
định nghĩa liên quan. Hình dạng khuyến khích sự phát triển của một tập hợp (dự án hoặc
dành riêng cho tổ chức) để mô tả hệ thống và cung cấp một cách đơn giản để
trích xuất thông tin này để sử dụng bởi các công cụ khác (xem -tiếng vang tùy chọn ở trên). Mô tả
cú pháp tệp không chỉ dùng để chỉ định các phụ thuộc thành phần có liên quan đến việc xây dựng
quy trình, nhưng cho phép định nghĩa chung, có thứ bậc về các nhiệm vụ định hướng sản phẩm. Các
khái niệm về sự phụ thuộc đệ quy ánh xạ trực tiếp tới việc sàng lọc từng bước nhiệm vụ
các định nghĩa. Những nhiệm vụ như vậy có thể được tự động hóa hoàn toàn, một phần hoặc hoàn toàn không tự động nếu thích hợp.
Do đó, một số hoạt động nhất định có thể được tự động hóa và tiêu chuẩn hóa, trong khi các hoạt động khác được
chỉ được mô tả một cách không chính thức để ghi lại chúng hoặc lý giải về chúng (xem
hình_rms(1) ví dụ như).

Cú pháp Structure


Cấu trúc cú pháp cơ bản của tệp mô tả hình dạng được tạo thành từ:

Nhận xét
Các chú thích bắt đầu bằng ký tự ``#'' và kéo dài đến cuối dòng. TRONG
Shapefiles, phần cuối của một dòng được định nghĩa là một dòng mới không thoát (``\''),
hoặc cuối tập tin. Ký tự bình luận không thể thoát được nhưng có thể được trích dẫn
trong dấu ngoặc đơn hoặc dấu ngoặc kép. Ký tự chú thích trong dòng lệnh của quy tắc đích
được bỏ qua bởi hình dạng.

Chỉ thị
Chỉ thị là những từ khóa đặc biệt, được biết đến để định hình. Chỉ thị bắt đầu ở cột 0 của a
dòng và kéo dài đến cuối dòng. Hiện tại, chỉ thị duy nhất được công nhận bởi hình dạng
is

bao gồm <danh sách of hồ sơ tên>

Macro Định nghĩa
Các định nghĩa vĩ mô có dạng tổng quát:

TÊN <macro định nghĩa biểu tượng> VALUE

TÊN phải là một từ duy nhất bao gồm một chuỗi các ký tự tên. Tên nhân vật
đều là các ký tự có thể in được ngoại trừ những ký tự sau:

$ # : = ; \t \n

Ký hiệu định nghĩa macro là ``='', ``+='', hoặc ``:=''. VALUE là một tùy ý
chuỗi kết thúc ở cuối dòng hoặc một nhận xét. Các định nghĩa vĩ mô thường bắt đầu bằng
cột đầu tiên của một dòng, nhưng có thể đứng trước cột đầu tiên nhân vật. Vĩ mô
định nghĩa không được chứa hàng đầu ký tự (xem phần trên Macro Định nghĩa,
bên dưới để biết thêm chi tiết).

Macro dự án
Tham chiếu macro có một trong các dạng sau:

$(<macro tên>)
${<macro tên>}
$<single tính cách tên>

Toán tử thay thế macro (``$'') không thể thoát được, nhưng có thể được biểu thị bằng toán tử
sự thay thế ``$$''. Sự thay thế macro xảy ra ở bất cứ đâu trong tệp mô tả, ngoại trừ trong
nhận xét, tên macro, phía bên trái của quy tắc chọn phiên bản và định nghĩa biến thể
tiêu đề (xem phần tiếp theo) và định nghĩa lớp biến thể (xem phần về Macro
Thay thế, bên dưới, để biết thêm chi tiết).

Nội quy Các quy tắc được tạo thành từ một loại trừ cú đội đầu, và một tùy chọn loại trừ thân hình. Tiêu đề quy tắc
bao gồm một trái tay bên, Một loại trừ định nghĩa biểu tượng, và một tùy chọn ngay tay
bên. Phía bên trái thường bắt đầu ở cột 0 của một dòng và có thể đứng trước
bằng cách dẫn đầu nhân vật. Cạnh trái của tiêu đề quy tắc không được chứa
hàng đầu nhân vật. Phía bên phải tùy chọn của tiêu đề quy tắc mở rộng đến
cuối dòng hoặc đầu phần nội dung quy tắc. Một thân quy tắc bao gồm
dòng liên tiếp bắt đầu bằng một tính cách. Phần thân của một quy tắc là
kết thúc bởi dòng tiếp theo không bắt đầu bằng một ký tự hoặc phần cuối của
tập tin.

Hình dạng nhận ra ba loại quy tắc khác nhau, được phân biệt bằng các quy tắc tương ứng.
ký hiệu định nghĩa quy tắc:

·
mục tiêu quy tắc. Quy tắc đích có một ký tự dấu hai chấm đơn (``:'') làm quy tắc
biểu tượng định nghĩa. Phía bên trái của tiêu đề quy tắc đích là khoảng trắng-
danh sách tên riêng biệt. Phía bên tay phải tùy chọn bao gồm một khoảng trắng-
danh sách tên riêng biệt, theo sau là danh sách tùy chọn các thành phần sản xuất
(xem phần trên Mục tiêu Nội quy, phía dưới).

·
phiên bản lựa chọn quy tắc. Quy tắc lựa chọn phiên bản có ký hiệu định nghĩa quy tắc
``:-''. Tiêu đề quy tắc của quy tắc chọn phiên bản có một từ duy nhất ở bên trái
bên tay và không có bên tay phải (xem phần trên phiên bản Lựa chọn Nội quy,
dưới đây).

·
biến thể các định nghĩa. Mặc dù các định nghĩa về biến thể - như tên cho thấy -
các định nghĩa, không phải quy tắc (từ quan điểm ngữ nghĩa), cú pháp của chúng
sự đại diện là một quy luật. Định nghĩa biến thể có định nghĩa quy tắc
biểu tượng ``:+''. Tiêu đề quy tắc của một định nghĩa biến thể có một từ duy nhất trên đó
bên trái và không có bên tay phải (xem phần trên biến thể Định nghĩa,
dưới đây).

biến thể Lớp Định nghĩa
Các định nghĩa lớp biến thể có dạng

vclass ::= (biến thể1, biến thể2, ...)

(xem phần trên Biến thể, phía dưới).

Dòng Tiếp tục
Nếu phần cuối của dòng đầu vào được thoát bằng dấu gạch chéo ngược (``\'') thì dòng tiếp theo là
được coi là một đường tiếp tục. Chuỗi ký tự dòng mới dấu gạch chéo ngược là
được thay thế bằng một khoảng trống.

Macro Định nghĩa


Định nghĩa macro liên kết tên với các chuỗi sẽ được thay thế ở bất kỳ vị trí nào có tên
của macro được tham chiếu (xem phần tiếp theo). Macro rất hữu ích cho việc viết có thể bảo trì,
và các tập tin mô tả hơi chung chung. Ngay cả những dự án lớn vừa phải cũng sẽ tìm thấy nó
cực kỳ bổ ích để xác định các quy ước đặt tên và sử dụng các macro nhất định
xuyên suốt tập tin mô tả sản phẩm.

Có ba loại định nghĩa macro khác nhau:

Đơn giản Macro Định nghĩa

Một định nghĩa macro đơn giản trông giống như

TÊN = <bất kỳ chuỗi>

Chuỗi được liên kết với tên macro có thể chứa tham chiếu macro. Nếu một vĩ mô
được xác định nhiều lần trong một tệp mô tả, định nghĩa cuối cùng sẽ là
hiệu quả. Các macro được xác định trên dòng lệnh được ưu tiên hơn các định nghĩa của cùng một dòng lệnh
macro trong tệp mô tả.

Phụ gia Macro Định nghĩa

Kiểu định nghĩa macro này trông giống như

TÊN += <bất kỳ chuỗi>

Chuỗi ở phía bên phải của định nghĩa được thêm vào bất kỳ giá trị hiện có nào
liên quan TÊN, cách nhau bằng dấu cách. Nhiều định nghĩa macro phụ gia
được nối theo thứ tự xuất hiện trong tệp mô tả. Nếu một chất phụ gia
định nghĩa macro xảy ra trên dòng lệnh, giá trị chuỗi cuối cùng được xác định trong
tệp mô tả được thêm vào trước giá trị chuỗi được xác định trên dòng lệnh. phụ gia
định nghĩa macro trong tệp mô tả được thêm vào các giá trị chuỗi được xác định trên
dòng lệnh.

Đánh giá Macro Định nghĩa

Các macro đánh giá được xác định theo cách sau:

TÊN := <bất kỳ chuỗi>

Đầu tiên, giá trị chuỗi được liên kết với TÊN tương tự như đối với macro đơn giản
các định nghĩa. Khi TÊN được thay thế lần đầu tiên, phía bên phải của
định nghĩa được đánh giá và kết quả của đánh giá này sẽ thay thế chuỗi gốc
giá trị liên quan đến TÊN. Do đó, việc đánh giá vế phải xảy ra đúng một lần.
Điều này đặc biệt hữu ích nếu chuỗi xác định là một chuỗi thay thế lệnh (xem phần tiếp theo
phần).

Macro Thay thế


Sự thay thế vĩ mô là quá trình thay thế một vĩ mô tài liệu tham khảo theo giá trị chuỗi
liên kết với một tên macro. Các tham chiếu đến các macro không xác định được thay thế bằng một khoảng trống
sợi dây. Tham chiếu macro có một trong các dạng sau:

$(TÊN)
${TÊN}
$<bất kỳ duy nhất nhân vật>

Sau đây là các tài liệu tham khảo macro hợp lệ:

$ (CFLAGS)
$7
${SOURCE-FILES}
$(X)
$X

Hai tài liệu tham khảo cuối cùng có sự thay thế giống hệt nhau. Tham chiếu vĩ mô

$$

sẽ thay thế một ký hiệu đô la duy nhất.

Trước khi thay thế tham chiếu macro, chuỗi liên quan sẽ được đánh giá.
Đánh giá một giá trị chuỗi bao gồm

-
thay thế tất cả các tham chiếu macro trong giá trị chuỗi

-
thay thế lệnh. Bất kỳ chuỗi con nào của giá trị chuỗi được đặt trong dấu ngoặc kép (```'')
sẽ được chuyển dưới dạng lệnh tới shell và được thay thế bằng tiêu chuẩn của lệnh
đầu ra.

-
thay thế chuỗi. Nếu tham chiếu macro có dạng

$(TÊN:=)

tham chiếu sẽ được thay thế bằng giá trị được đánh giá của TÊN, với tất cả các lần xuất hiện của
chuỗi được thay thế bằng chuỗi . Điều này đặc biệt hữu ích để duy trì
danh sách liên quan, chẳng hạn như NGUỒNCÁC ĐỐI TƯỢNG ví dụ: tự động:

NGUỒN:= `echo *.c`
ĐỐI TƯỢNG := $(CSOURCES:.c=.o)

Hình dạng thay thế tham chiếu macro càng muộn càng tốt. Tham chiếu macro xuất hiện trong một
định nghĩa macro chỉ được thay thế khi chính macro đã xác định được thay thế. Vĩ mô
các tham chiếu ở phía phụ thuộc của quy tắc đích được thay thế khi quy tắc
được đánh giá. Tham chiếu macro ở phía mục tiêu của quy tắc đích được thay thế ngay lập tức
sau khi hình đã đọc tệp mô tả, tức là trước khi bắt đầu bất kỳ quá trình sản xuất nào. Vĩ mô
các tham chiếu trong các lệnh bao gồm được thay thế khi lệnh được thực thi trong khi
hình dạng đọc tệp mô tả.

Built-in Reduct ® Mục đích Macros


Để cung cấp tham số hóa các quy tắc tiềm ẩn có sẵn của hình dạng, một số
các macro được xác định trước được cung cấp theo quy ước. Các macro này có giá trị ban đầu có ý nghĩa
mà người dùng có thể thay đổi. Ngoài ra còn có một số macro có ý nghĩa đặc biệt
cho hình dạng.

Macro Mục đích Ban đầu giá trị chú ý

@ tên đầy đủ của hiện tại đặc biệt
mục tiêu

? danh sách các phụ thuộc mục tiêu đặc biệt

< tên của mục tiêu đầu tiên đặc biệt
phụ thuộc

* tiền tố được chia sẻ bởi mục tiêu đặc biệt
và tên tệp phụ thuộc

# id phiên bản bị ràng buộc của hiện tại đặc biệt
phụ thuộc

$ ký tự ``$'' $

+ Tên đối tượng cần ràng buộc đặc biệt
sang một phiên bản (quy tắc lựa chọn
chỉ một!)

AS Chương trình thực hiện lắp ráp thông thường

ASFLAGS Cờ cho trình biên dịch mã thông thường

Chương trình CC để biên dịch C cc thông thường
chương trình

Cờ CFLAGS cho trình biên dịch C thông thường

Chương trình FC để biên dịch Fortran f77conventional
chương trình

Cờ FFLAGS cho trình biên dịch Fortran thông thường

HOSTTYPE Kiến trúc máy chủ của đặc biệt
máy tính chạy hình dạng.
Giá trị của macro này là
được sử dụng bởi hình dạng để xây dựng
thuộc tính khóa dẫn xuất
cho các đối tượng dẫn xuất

NHẬP Danh sách các biến môi trường đặc biệt
sẽ được nhập khẩu dưới dạng
định nghĩa vĩ mô

LD Program để liên kết các chương trình ldconventional

LDFLAGS Cờ cho trình liên kết thông thường

Chương trình LEX để biến ngữ pháp Lex thành từ vựng thông thường
vào chương trình C hoặc Ratfor

LFLAGS Cờ cho bộ phân tích từ vựng thông thường
lex

LOGNAME Tên hoặc id mạng bên dưới đặc biệt
mà người dùng sở hữu
quá trình hình dạng được đăng nhập

Chương trình M2C biên dịch Modula2 m2cconventional
chương trình

Cờ M2FLAGS cho trình biên dịch Modula2 thông thường

MAKE Dòng lệnh có hình dạng đặc biệt $(MAKEFLAGS)
hình dạng đã được gọi.
Macro này được sử dụng cho
các cuộc gọi đệ quy để định hình

MAKEFLAGS Cờ dòng lệnh có liên quan <defined từđặc biệt
cho các cuộc gọi đệ quy để định hình lệnh dòng>

Chương trình PC để biên dịch Pascal pcthông thường
chương trình

Cờ PFLAGS cho trình biên dịch Pascal thông thường

Cờ RFLAGS cho trình biên dịch Fortran thông thường
cho các chương trình Ratfor

SHAPEPID Id tiến trình của đặc biệt
chương trình chạy hình

SHAPEVERSION Id phiên bản của theshape_CM-4.4special
chương trình hình dạng (hoặc cao hơn)

SHELL Bộ xử lý lệnh cho /bin/shspecial
lệnh quy tắc mục tiêu
dòng. Lệnh được tham chiếu
bộ xử lý phải có khả năng
nhận lệnh của nó từ
đầu vào tiêu chuẩn (xem phần
on Lệnh thực hiện,
dưới đây)

Phần mở rộng đường dẫn tìm kiếm VPATH cho đặc biệt
nội địa hóa các thành phần nguồn

Chương trình YACC để biến ngữ pháp Yacc thành thông thường
vào chương trình C

Cờ YFLAGS cho yacc thông thường

vpath Phần mở rộng đường dẫn tìm kiếm động đặc biệt
cho các biến thể của thành phần nguồn

Chức năng của các macro mục đích đặc biệt LOẠI CHỦ, NHẬP KHẨU, MAKE, VPATHvpath đang
được mô tả trong các phần VẬN HÀNH và Biến thể bên dưới.

Mục tiêu Nội quy


Một quy tắc đích xác định cách thức và trong những điều kiện nào một mục tiêu được bắt nguồn từ một tập hợp các
đối tượng nguồn và/hoặc các mục tiêu khác. Mục tiêu là tên có thể tham chiếu đến một tệp nhưng cần
không được làm như vậy. Quy tắc mục tiêu có định dạng sau:

... : [ ràng buộc>] [+ ...] [ ...] \
[: ...] [; ]
\t[ ]
...

Tiêu đề của quy tắc đích (xem Cú pháp Structure , ở trên) bao gồm một danh sách
mục tiêu, kết thúc bằng dấu hai chấm, theo sau là danh sách tùy chọn gồm phụ thuộc, Và một
danh sách tùy chọn của sản xuất thành phần, bắt đầu sau ký tự dấu hai chấm thứ hai. Các
tiêu đề quy tắc được kết thúc bằng dòng mới hoặc dấu chấm phẩy và theo sau là quy tắc tùy chọn
thân hình. Cơ thể quy tắc bao gồm lệnh dòng được thực hiện khi một mục tiêu cần được
được lấy lại. Dòng lệnh đầu tiên có thể ngay sau dấu chấm phẩy kết thúc
tiêu đề quy tắc. Các dòng lệnh tiếp theo phải bắt đầu bằng một tính cách. Mục tiêu
nội dung quy tắc được kết thúc bởi dòng đầu tiên không bắt đầu bằng , hoặc đến cuối
của tệp.

Mục tiêu

Khi nhiều mục tiêu xuất hiện ở phía bên trái của tiêu đề quy tắc và đạo hàm
quá trình cần phải được bắt đầu, hình dạng sẽ lấy được tất cả các mục tiêu trong một lần chạy.

Sự phụ thuộc

Hình dạng kiểm tra sự phụ thuộc của mục tiêu từ trái sang phải. Sự phụ thuộc đầu tiên được kiểm tra
liệu đó có phải là tên của quy tắc lựa chọn phiên bản hay không. Nếu đúng như vậy, hình dạng sẽ thiết lập lựa chọn
quy tắc đang hoạt động (làm lu mờ tất cả các kích hoạt quy tắc lựa chọn trước đó) và chuyển sang quy tắc tiếp theo
sự phụ thuộc. Tiếp theo, hình dạng sẽ kiểm tra xem phần phụ thuộc có phải là kích hoạt biến thể hay không. Nếu
sự phụ thuộc bắt đầu bằng ký tự ``+'' theo sau là tên của một biến thể, biến thể đó là
được kích hoạt (xem phần trên Biến thể, dưới). Shape tiến hành kiểm tra biến thể
kích hoạt cho đến khi tìm thấy phần phụ thuộc đầu tiên không phải là kích hoạt biến thể. Kế tiếp,
hình dạng tiến hành thông qua danh sách các phụ thuộc còn lại và ràng buộc (Hoặc các dẫn xuất) mỗi
chúng nếu cần thiết, thực hiện duyệt theo chiều sâu đầu tiên của biểu đồ phụ thuộc (xem phần
phần trên HOẠT ĐỘNG, phía dưới).

Sản lượng Thành phần

Sau khi tất cả các phụ thuộc đã được ràng buộc, hình dạng sẽ xây dựng nguồn gốc chính cho
mục tiêu. Khóa phái sinh là một thuộc tính xác định tập hợp đầy đủ các tham số
xác định xem mục tiêu có cần được xây dựng lại hay không. Bên cạnh tất cả các phụ thuộc ràng buộc,
khóa dẫn xuất chứa sản xuất thành phần đã được chỉ định trong quy tắc mục tiêu
tiêu đề. Các thành phần sản xuất thường là những định nghĩa đầy đủ về các macro được
được tham chiếu trong các dòng lệnh của phần thân quy tắc. Vì vậy, các phiên bản công cụ và công tắc
ảnh hưởng đến hoạt động của một công cụ có thể được coi là một phần của các tham số đạo hàm của
mục tiêu. Để đưa các định nghĩa vĩ mô vào khóa dẫn xuất của mục tiêu,
tài liệu tham khảo đặc biệt

+(TÊN1) +(TÊN2) ...

phải xảy ra thay cho các thành phần sản xuất.

Lệnh đường

Khi hình dạng kết luận rằng mục tiêu cần được bắt nguồn (tái), các lệnh trong mục tiêu
thân quy tắc được thực thi. Phần thân quy tắc bao gồm các dòng liên tiếp được coi là
các lệnh riêng biệt. Mỗi dòng lệnh được đánh giá như được mô tả trong phần Macro
Thay thế, ở trên và được chuyển tới trình thông dịch lệnh được xác định bởi macro SHELL.
Mỗi dòng lệnh được thực thi như một tiến trình riêng biệt. Nếu cần các lệnh phức tạp
không vừa trên một dòng hoặc nếu chi phí của các lệnh gọi quy trình lặp đi lặp lại sẽ cao
tránh được, một dòng lệnh logic có thể được mở rộng bằng cách thoát dòng mới bằng dấu gạch chéo ngược
tính cách (\) và tiếp tục nó trên dòng vật lý tiếp theo.

Dòng lệnh có thể được bắt đầu bằng một hoặc hai ký tự đặc biệt:

- hình dạng bỏ qua bất kỳ mã lỗi khác 0 nào được dòng lệnh trả về mà mã lỗi đầu tiên
ký tự là dấu trừ. Dấu trừ không được truyền vào shell. Khi một
lệnh trả về trạng thái trả về khác 0, hình dạng thường xem xét đạo hàm
quá trình cho mục tiêu là thất bại và chấm dứt, trừ khi -i or -k công tắc, hoặc
các .PHỚT LỜ mục tiêu đặc biệt có hiệu lực.

@ Nếu ký tự đầu tiên của lệnh là ``@'', hình dạng không in lệnh
trước khi thực hiện nó. ``@'' không được chuyển tới shell.

@- Nếu hai cái đầu tiên không- các ký tự là ``@-'', hình dạng bỏ qua kết quả trả về khác 0
mã và ngăn chặn việc in dòng lệnh.

Nếu hình dạng được gọi trong Không thực hiện chế độ (-n), các dòng lệnh đã đánh giá sẽ được in trên
đầu ra tiêu chuẩn, hiển thị hình dạng sẽ làm gì nếu được gọi mà không có -n. Những dòng lệnh đó
chứa tham chiếu macro $ (LÀM) luôn được thực thi, ngay cả khi -n được thiết lập. Xong rồi
để cho phép mô phỏng các bản dựng đệ quy có thể trải rộng trên các thư mục con. Tài liệu tham khảo
$ (LÀM) được thay thế bằng lệnh gọi hình dạng với tất cả dòng lệnh có liên quan
thiết lập công tắc.

Trong các dòng lệnh của nội dung quy tắc, một số phần của tiêu đề quy tắc đích có thể được
được tham chiếu động. Khi một dòng lệnh được đánh giá, các thay thế sau đây là
có thể

Tài liệu tham khảo Thay thế
$@ tên đầy đủ của mục tiêu hiện tại
$? danh sách phụ thuộc
$< tên của phần phụ thuộc đầu tiên
Tiền tố $* được chia sẻ bởi tên tệp hiện tại và phụ thuộc
$# id phiên bản bị ràng buộc của phần phụ thuộc hiện tại
(chỉ quy tắc ngầm)

Ngầm hiểu Nội quy


Quy tắc mục tiêu của hình dạng có hai loại khác nhau: rõ ràng và ngầm định. Quy tắc ngầm
có thể được coi là các mẫu xác định các mẫu phụ thuộc áp dụng cho hầu hết các mục tiêu của
loại đã cho. Vì lý do này, các quy tắc ngầm đôi khi được gọi là Belt Hold quy tắc. Hình dạng
chuyển đổi các quy tắc ẩn kiểu cũ của make (ví dụ: .co:) thành các quy tắc mẫu trong khi nó đọc
tập tin mô tả. Ví dụ, một mẫu phụ thuộc điển hình là sự phụ thuộc của các tệp
chứa mã đối tượng có thể liên kết, ví dụ mô-đun.o đến các tập tin tương ứng có chứa nguồn
mã, ví dụ mô-đun.c. Quá trình dẫn xuất của hầu hết các cặp nguồn/có nguồn gốc này là
giống hệt nhau. Thay vì viết các quy tắc riêng biệt cho tất cả các phụ thuộc nguồn/có nguồn gốc của một
hệ thống, có thể viết một quy tắc chung duy nhất, được gọi là quy tắc ngầm. Một ẩn ý
quy tắc có định dạng sau:

%[. ] %[. ] ... : %[. ] %[. ]... \
[: ...] [; ]
\t[ ]
\t[ ]
...

Mặc dù cấu trúc của các quy tắc ngầm giống như mô tả ở trên nhưng tên của các mục tiêu
và các phần phụ thuộc được thay thế bằng các mẫu mục tiêu và các mẫu phụ thuộc tương ứng.
Ký tự phần trăm trong mẫu mục tiêu đóng vai trò là ký tự đại diện được khớp với tất cả
tên của mục tiêu cho đến hậu tố cuối tùy chọn. Đối với hình dạng, tên đối tượng hậu tố is
chuỗi ký tự được bao quanh bởi ký tự dấu chấm cuối cùng (``.'') trong tên,
ký tự kết thúc tên. Ví dụ sau minh họa hình dạng
Khái niệm hậu tố:

Họ tên suffix
mẫu.cde CDE
mẫu.xycc
mẫu_c
.sample.c c

Sau đây là ví dụ về quy tắc ngầm dẫn xuất mã đối tượng có thể liên kết từ
tệp nguồn C tương ứng:

%.o : %.c : +(CC) +(CFLAGS)
\t@echo hình dạng - đang thực thi: $(CC) -c $(CFLAGS) $#;
\t@$(CC) $(CFLAGS) -E %.c |
sed 's;^\(# [0-9][0-9]* \"\)%.c\(\".*\)$$;e1$#\2;' > %.i;
\t@$(CC) -c $(CFLAGS) %.i;
\t@rm %.i;

LƯU Ý: Quy tắc này là quy tắc tiềm ẩn được tích hợp sẵn của hình dạng để biên dịch các tệp nguồn C. Điều khó hiểu
chuỗi lệnh có mục đích mã hóa id phiên bản tệp hoàn chỉnh vào đối tượng
mã (ví dụ: sample.c[3.4] thay vì sample.c). Điều này cực kỳ hữu ích khi kết hợp
với với -g switch của hầu hết các trình biên dịch C và các trình gỡ lỗi nhạy cảm với phiên bản, chẳng hạn như
vgdb.

Nếu một mục tiêu được tạo ra bằng cách sử dụng các quy tắc ngầm thì tên của mục tiêu sẽ khớp với
mẫu mục tiêu của các quy tắc ngầm. Nếu một quy tắc phù hợp, phần phù hợp của
tên mục tiêu (các thân cây, được tham chiếu bởi ``%'') được thay thế một cách nhất quán cho tất cả các
sự xuất hiện của ký tự đại diện trong toàn bộ quy tắc. Một khi điều này được thực hiện, ẩn ý
quy tắc được xử lý như một quy tắc mục tiêu rõ ràng.

Rõ ràng Nội quy


Quy tắc rõ ràng liên kết tên mục tiêu rõ ràng với các phụ thuộc rõ ràng. Quy tắc rõ ràng
thường được sử dụng nhất để chỉ định các phần phụ thuộc không thể được bao hàm bởi các quy tắc ngầm,
chẳng hạn như tạo ra một chương trình thực thi bằng cách liên kết nhiều mô-đun mã đối tượng. Ở nhiều nơi
trường hợp, các quy tắc rõ ràng được sử dụng để chỉ xác định những phụ thuộc mục tiêu không
được ngụ ý bởi một quy tắc ngầm định (chẳng hạn như bao gồm các phần phụ thuộc cho các tệp đối tượng), trong khi
sự phụ thuộc `` tự nhiên '' được giả định là có mặt. Nếu một tập tin mô tả chỉ chứa
loại phụ thuộc rõ ràng này, các phụ thuộc ngầm bị bỏ qua (và một
nội dung quy tắc) được tự động thêm theo hình dạng vào tổng danh sách các phần phụ thuộc đích.

Built-in Ngầm hiểu Nội quy


Hình dạng cung cấp một số quy tắc mục tiêu tiềm ẩn được xác định trước bao gồm nhiều quy tắc chung
dẫn xuất nguồn/đích. Bảng sau liệt kê các mẫu mục tiêu và sự phụ thuộc
các mẫu cho các quy tắc ẩn có sẵn của hình dạng.

Mục tiêu Phụ thuộc Đạo hàm
%.a %.c Biên dịch thư viện lưu trữ từ nguồn C
%.c %l Tạo chương trình C từ ngữ pháp Lex
%.c %.y Tạo chương trình C từ ngữ pháp Yacc
%.o %l Biên dịch mã đối tượng từ ngữ pháp Lex
%.o %y Biên dịch mã đối tượng từ ngữ pháp Yacc
%.o %s Dịch chương trình biên dịch sang mã đối tượng
%.o %r Biên dịch Ratfor nguồn
%.o %.F Biên dịch nguồn Fortran
%.o %f Biên dịch nguồn Fortran
%.sym %.def Biên dịch mô-đun định nghĩa Mô-đun
%.o %.mod Biên dịch các mô-đun triển khai Modula
%.o %p Biên dịch nguồn Pascal
%.o %.c Biên dịch nguồn C
% %.sh Tạo chương trình thực thi từ shell-script
% %.r Xây dựng chương trình thực thi từ nguồn Ratfor
% %.F Xây dựng chương trình thực thi từ nguồn Fortran
% %.f Xây dựng chương trình thực thi từ nguồn Fortran
% %.p Xây dựng chương trình thực thi được từ nguồn Pascal
% %.mod Xây dựng chương trình thực thi từ nguồn Modula
% %.c Xây dựng chương trình thực thi được từ nguồn C

Để có định nghĩa đầy đủ về các quy tắc ẩn có sẵn của hình dạng, hãy chạy hình dạng -p.

Reduct ® Mục đích Mục tiêu


Một số khía cạnh hoạt động của hình dạng được kiểm soát bởi các mục tiêu có mục đích đặc biệt có thể được
đưa vào tập tin mô tả. Các mục tiêu có mục đích đặc biệt theo quy ước bắt đầu bằng một khoảng thời gian
ký tự và không có lệnh liên quan.

Mục tiêu Mục đích

.DEFAULT: các lệnh trong phần nội dung quy tắc của .VỠ NỢ quy tắc đích được thực thi cho tất cả
các mục tiêu không thể được bắt nguồn bằng các quy tắc mục tiêu rõ ràng hoặc tiềm ẩn. Nếu không
tất cả các lệnh sẽ được thực thi cho một quy tắc nhưng .VỠ NỢ là cần thiết cho việc khác
mục tiêu, quy tắc đó có thể được cung cấp một lệnh trống (hoặc ``;'' ở cuối
tiêu đề quy tắc hoặc một dòng trống bắt đầu bằng ). Nếu .VỠ NỢ
phụ thuộc và không có mục tiêu nào được yêu cầu từ dòng lệnh, những điều này
các phần phụ thuộc được xử lý như thể chúng là mục tiêu được yêu cầu từ lệnh
hàng.

.IGNORE: làm cho hình dạng bỏ qua các mã trả về khác 0 của các lệnh được gọi. Tương đương
đến -i chuyển đổi

.SILENT: thực thi lệnh im lặng. Các dòng lệnh không được in trước khi thực hiện.
Tương đương với -s chuyển đổi

.BPOOL: chỉ các phần phụ thuộc liên quan đến mục tiêu này mới được lưu trữ trong tệp dẫn xuất
bộ nhớ cache đối tượng

.NOBPOOL: các phần phụ thuộc liên quan đến mục tiêu này là không được lưu trữ trong đối tượng dẫn xuất
bộ nhớ cache.

Nếu cả hai, .BPOOL.NOBPOOL được xác định, chỉ có tập khác biệt của cả hai phụ thuộc
danh sách sẽ được lưu trữ trong bộ đệm đối tượng dẫn xuất.

phiên bản Lựa chọn Nội quy


Khi hình dạng tạo mục tiêu, nó sử dụng phiên bản lựa chọn quy tắc để liên kết một phiên bản duy nhất với
mỗi tên của các đối tượng nguồn tiên quyết. Quy tắc lựa chọn phiên bản bao gồm tên,
và một tập hợp liên quan Thuộc tính danh sách trong thân quy tắc. Định dạng lựa chọn phiên bản
quy tắc là:
[( , ,...)] :-
\t[ ,] (...), (...);
\t[ ,] (...), (...);
...
\t.
Phần thân của quy tắc lựa chọn phiên bản bao gồm một chuỗi các lựa chọn thay thế, cách nhau bởi
dấu chấm phẩy. Mỗi lựa chọn thay thế là một mẫu tùy chọn, theo sau là một dấu phẩy được phân tách bằng dấu phẩy
danh sách của vị ngữ. Quy tắc lựa chọn được kết thúc bằng ký tự dấu chấm. Dấu chấm phẩy-
chuỗi các lựa chọn thay thế riêng biệt trong quy tắc lựa chọn phiên bản tạo thành một quy tắc logic OR
sự biểu lộ. Danh sách các vị từ được phân tách bằng dấu phẩy trong một phương án thay thế tạo thành một logic
biểu hiện.

phiên bản Binding

Liên kết phiên bản là quá trình xác định chính xác một phiên bản của đối tượng nguồn nhất định
từ tập hợp tất cả các phiên bản có sẵn. Ràng buộc phiên bản được cho là thành công nếu một trong những
các lựa chọn thay thế quy tắc thành công. Một giải pháp thay thế sẽ thành công nếu nó dẫn tới việc xác định được
đúng một phiên bản. Người ta nói rằng không nếu không thì. Khi hình dạng liên kết một phiên bản với tên
của một đối tượng nguồn, nó sẽ thử từng phương án thay thế bằng một mẫu phù hợp, cho đến khi tên được
ràng buộc rõ ràng với một phiên bản. Nếu mẫu bị bỏ qua, mẫu thay thế sẽ được thử
một cách vô điều kiện.

Chức năng của các quy tắc lựa chọn phiên bản là một trong những quy tắc quan trọng nhất của hình dạng.
những khía cạnh tinh tế. Để cung cấp cơ sở cho sự hiểu biết trực quan về
cơ chế quy tắc lựa chọn, một ví dụ được mô tả. Quy tắc gần đây nhất, bên dưới, liên kết:
- các tệp đã được người dùng gọi hình dạng kiểm tra để sửa đổi
- phiên bản của tập tin đã được sửa đổi gần đây (→ trạng thái lưu) bởi cùng một người dùng
- phiên bản được đề xuất gần đây nhất (→ trạng thái đề xuất) của các tệp được sửa đổi bởi người dùng khác,
- hoặc phiên bản tệp từ bản phát hành cuối cùng.

LASTRELEASE := `lastrelease`# "lastrelease" trả về tên
# của bản phát hành cuối cùng
gần đây nhất :-
eq (trạng thái, bận), tồn tại ($+[locked_by($(LOGNAME)):]);
ge (trạng thái, đã lưu), tối đa (mtime),
max (phiên bản), eq (tác giả, $(LOGNAME));
ge (trạng thái, đề xuất), tối đa (mtime),
tối đa (phiên bản);
eq (__SymbolicName__, $(LASTRELEASE));
cắt ($_rule$: không thể ràng buộc $+ theo yêu cầu!).

bị khóa_by (user_id) :-
max (phiên bản), eq (locker, $_user_id$).

Để biết mô tả chi tiết hơn về cú pháp, ngữ nghĩa và danh sách quy tắc lựa chọn phiên bản
của các vị từ có sẵn, xem quy tắc ràng buộc(7).

kích hoạt of phiên bản Lựa chọn Nội quy

Việc lựa chọn phiên bản cho một mục tiêu nhất định được thực hiện bằng cách chỉ định tên của
quy tắc lựa chọn làm phần phụ thuộc đầu tiên của mục tiêu hoặc bằng cách cung cấp tên quy tắc lựa chọn làm
đối số với -R lựa chọn. Nếu không có quy tắc lựa chọn nào được chỉ định rõ ràng, hình dạng sẽ sử dụng
quy tắc chọn phiên bản tích hợp cố gắng liên kết một tệp thông thường hoặc tệp gần đây nhất
phiên bản thành tên của một đối tượng.

Biến thể


Thuật ngữ biến thể đề cập đến ý định quản lý một sản phẩm phải tuân thủ
các tập hợp khác nhau của các ràng buộc bên ngoài khác nhau như một đơn vị. Độc lập với đặc thù
ngữ nghĩa có thể được liên kết với khái niệm biến thể, tồn tại một số lượng nhỏ
kỹ thuật để thực hiện biến thể phần mềm ở cấp độ kỹ thuật. Những kỹ thuật này là:

vật lý tách biệt của các thành phần biến thể. Điều này đạt được bằng cách duy trì các bản sao riêng biệt
của các thành phần trong các thư mục khác nhau hoặc bằng cách duy trì các nhánh cụ thể của biến thể trong
hệ thống kiểm soát phiên bản;

nguồn sơ chế của các thành phần biến thể. Với kỹ thuật này, nhiều biến thể logic
của thành phần nguồn được duy trì trong một tệp duy nhất chứa bộ tiền xử lý
hướng dẫn. Trước khi một biến thể cụ thể có thể được truy cập, bộ tiền xử lý phải trích xuất nó
từ nguồn chung. Một ví dụ phổ biến của kỹ thuật này là có điều kiện biên soạn,
được điều khiển bởi các lệnh #if và #ifdef trong miền lập trình C/C++;

thành phần biến thể của các biến thể sản phẩm phức tạp. Kỹ thuật này giải quyết trường hợp khi
các biến thể khác nhau của một sản phẩm phức tạp (chẳng hạn như một chương trình) được tạo thành từ các
bộ thành phần;

nguồn gốc biến thể (hoặc biến thể của quy trình) tạo ra các biến thể khác nhau của
các đối tượng dẫn xuất từ ​​cùng một tập nguồn bằng cách sửa đổi các tham số của đạo hàm
quá trình. Một ví dụ điển hình cho trường hợp này là việc biên soạn chéo các nguồn giống nhau cho
các nền tảng mục tiêu khác nhau hoặc công cụ mã cho các mục đích khác nhau, chẳng hạn như
gỡ lỗi, kiểm tra, lập hồ sơ hoặc tối ưu hóa.

Tùy thuộc vào nhu cầu cụ thể của dự án, tất cả các kỹ thuật này có thể được áp dụng
sử dụng đồng thời và có thể được trộn lẫn khi thích hợp. Hình dạng cho phép liên kết
tên biến thể logic với một tập hợp các định nghĩa kiểm soát tất cả các mục được đề cập ở trên
kỹ thuật, giúp có thể yêu cầu xây dựng các biến thể hệ thống cụ thể (và
kết hợp các biến thể tương thích) mà không cần phải lo lắng về cách các biến thể này
được thực hiện về mặt kỹ thuật.

biến thể Định nghĩa


Hình dạng có được sự linh hoạt từ việc sử dụng vĩ mô thay thế trong tập tin mô tả
bất cứ nơi nào có thể. Các định nghĩa biến thể hình dạng về cơ bản là các nhóm định nghĩa macro
có hiệu lực khi biến thể được kích hoạt cho bản dựng. Một định nghĩa biến thể có
định dạng sau:

:+
\t tên1>=
...

Khi một biến thể được kích hoạt, các định nghĩa macro liên quan đến biến thể đó sẽ trở thành
hiệu quả. Bất kỳ định nghĩa nào trước đây về macro được tạo trong tệp mô tả hoặc trên
dòng lệnh được thay thế bằng sự thay thế macro biến thể. Nếu macro được xác định trong
một số biến thể được kích hoạt cùng nhau, các giá trị tương ứng sẽ được nối với nhau.

Định vị thể chất riêng biệt biến thể nguồn Đối tượng

Hình dạng cung cấp một macro đặc biệt, vpath, được dự định sẽ được sử dụng trong các định nghĩa biến thể.
Sản phẩm vpath macro xác định mức độ ưu tiên tìm kiếm của hình dạng khi lưu trữ phiên bản nguồn
xác định vị trí. Nếu như vpath không trống, hình dạng sẽ cố gắng tìm bất kỳ đối tượng nguồn được tham chiếu nào trong
thư mục vpath đầu tiên. Nếu một số biến thể được kích hoạt xác định vpath, tìm kiếm biến thể
đường dẫn được nối và tìm kiếm từ phải sang trái, tức là biến thể cuối cùng đã được
được kích hoạt có quyền ưu tiên. Chỉ khi không thể tìm thấy thành phần nguồn được tham chiếu trong bất kỳ
thư mục vpath, thư mục hiện tại sẽ được tìm kiếm. Nếu một đối tượng nguồn đã được
được tìm thấy, nó sẽ bị ràng buộc bởi quy tắc lựa chọn phiên bản hiện tại và tạm thời bị
được cài đặt trong thư mục xây dựng. Điều này có nghĩa là các thành phần được duy trì trong một
Thư mục con vpath tạm thời được chuyển lên thư mục chính. Như vậy, nó không phải
cần thiết để thực hiện bất kỳ tham chiếu nào đến đường dẫn thư mục con vpath trong quy tắc đích.

biến thể kích hoạt

Khi một sản phẩm được cấu hình và xây dựng, các biến thể thường được kích hoạt bằng cách cung cấp một
tên biến thể làm đối số cho -V tùy chọn.

Các biến thể cũng có thể được kích hoạt cho một mục tiêu nhất định bằng cách chỉ định tương ứng, có tiền tố ``+''
tên biến thể làm phần phụ thuộc (xem phần về Quy tắc mục tiêu ở trên). Kích hoạt biến thể
đối với mục tiêu phải xảy ra trước bất kỳ sự phụ thuộc đối tượng thực nào vào dòng phụ thuộc và
sau khi kích hoạt quy tắc lựa chọn phiên bản tùy chọn.

biến thể Lớp Định nghĩa


Với biến thể tốt nghiệp lớp XNUMX các định nghĩa, hình dạng cung cấp một cấu trúc cho phép xác định
không tương thích biến thể, tức là các biến thể không thể kích hoạt đồng thời. Hình dạng
định nghĩa lớp biến thể có định dạng sau:

vclass ::= ( , ...)

Tên biến thể giống nhau có thể xuất hiện trong nhiều định nghĩa lớp biến thể. Nếu một sự kết hợp
của các biến thể được yêu cầu với bất kỳ hai tên biến thể nào là thành viên của cùng một biến thể
lớp, hình dạng sẽ đưa ra thông báo lỗi và chấm dứt. Việc kiểm tra các lớp biến thể có thể
bị vô hiệu hóa bằng cách chỉ định -novclass bật dòng lệnh.

LƯU Ý: định nghĩa lớp biến thể phải xuất hiện trong tệp mô tả trước bất kỳ biến thể nào
định nghĩa được tham chiếu trong một lớp biến thể. Các lớp biến thể được xác định sau
các biến thể được tham chiếu không thể thực thi loại trừ lẫn nhau các biến thể không tương thích.

An Ví dụ

Ví dụ sau đây sẽ minh họa việc sử dụng các định nghĩa biến thể và các biến thể
các lớp học:

trình biên dịch vclass ::= (gnu, prop)

gnu:+
CC = gcc -Tường
TỐI ƯU HÓA = -O2 -hàm nội tuyến
GỠ LỖI = -g -g3
HỒ SƠ = -pg -a
STDC = -ansi

chỗ dựa:+
CC = cc
TỐI ƯU HÓA = +O3
GỠ LỖI = -g -z +Y
HỒ SƠ = -G
STDC = -Aa

chất lượng vclass ::= (gỡ lỗi, cấu hình, tối ưu hóa)

gỡ lỗi:+
VARCFLAGS = $(GỠ LỖI)

hồ sơ:+
VARCFLAGS = $(Hồ sơ)

tối ưu hóa:+
VARCFLAGS = $(TỐI ƯU HÓA)

CFLAGS += $(VARCFLAGS)

Nếu một biến thể yêu cầu sửa đổi macro với ý nghĩa được xác định trước thì đôi khi
một ý kiến ​​hay không để xác định lại macro trong phần biến thể. Trong trường hợp như vậy nó là
có thể tăng giá trị macro hiện có bằng cách sử dụng định nghĩa macro bổ sung của hình dạng
cơ sở và macro từ định nghĩa biến thể được xác định cho mục đích này (ví dụ: VARCFLAGS
trong ví dụ trên).

HOẠT ĐỘNG


Khi được gọi, đầu tiên, hình dạng sẽ phân tích dòng lệnh. Hình dạng ghi lại tên của các biến thể
được kích hoạt từ dòng lệnh thông qua -V lựa chọn. Tiếp theo, hình dạng khởi tạo
các macro tích hợp và đặc biệt. Ngoài ra, các quy tắc phái sinh tích hợp của hình dạng cũng được khởi tạo.

Reading các Mô tả Tập tin

Sau đó, tất cả các định nghĩa macro được thực hiện trên dòng lệnh đều có hiệu lực. Hình dạng sau đó
định vị và mở tập tin mô tả của nó. Nếu không có tệp mô tả nào được chỉ định làm đối số cho
các -f tùy chọn, hình dạng cố gắng tìm một trong các tệp tệp hình dạng, hình dáng, makefile, hoặc là
trang điểm. Đối với mỗi tên này, hình dạng sẽ cố gắng tìm một tệp thông thường trước tiên và nếu không
tệp đó tồn tại, để tìm phiên bản mới nhất của tệp đó trong phần kiểm soát phiên bản
lưu trữ. Nếu không tìm thấy phiên bản nào như vậy, hình dạng sẽ thử tên tiếp theo.

Khi hình dạng đọc tệp mô tả, nó sẽ thu thập tất cả các định nghĩa macro và biến chúng thành
có hiệu lực ngay lập tức, trừ khi macro cùng tên được xác định trên lệnh
đường kẻ. Nếu macro đặc biệt NHẬP KHẨU gặp phải, các biến môi trường được liệt kê là
được định nghĩa là macro. Nếu macro có cùng tên với biến môi trường đã nhập xảy ra
trong tệp mô tả, nó được ưu tiên hơn định nghĩa từ môi trường,
trừ khi -e công tắc có hiệu lực.

Khi hình dạng đọc một bao gồm chỉ thị, nó đánh giá phần còn lại của dòng (tức là
các ký tự ngay sau lệnh) và diễn giải mỗi từ là tên của
một tập tin sẽ được đọc. Mỗi tên tệp được liên kết với một tệp thông thường hoặc nhiều nhất
phiên bản gần đây của tập tin. Hình dạng mở từng tệp được bao gồm, tạm dừng đọc
tệp mô tả hiện tại và tiếp tục đọc nội dung của (các) tệp được bao gồm,
trước khi nó tiếp tục đọc tệp điều khiển gốc. Nếu có nhiều tên tập tin
được chỉ định trong một lệnh bao gồm, hình dạng sẽ đọc lần lượt từng tệp, bắt đầu bằng
ngoài cùng bên trái và kết thúc bằng tên tệp ngoài cùng bên phải. Nếu một tập tin đi kèm không thể
đã mở, hình dạng sẽ đưa ra cảnh báo.

Trong khi hình dạng đọc các tệp mô tả của nó, các quy tắc chọn phiên bản và quy tắc đích được
thu. Họ là xác định chỉ sau khi hình đã đọc xong tệp mô tả.
Các định nghĩa lớp vĩ mô, biến thể và biến thể sẽ có hiệu lực ngay khi chúng có
được công nhận.

Sản phẩm Xây dựng Quy trình xét duyệt

Sau khi đọc xong tệp mô tả, hình dạng sẽ xác định mục tiêu nào đã được
yêu cầu. Nếu mục tiêu đã được yêu cầu từ dòng lệnh, hình dạng sẽ cố gắng
xây dựng từng mục tiêu trong số chúng, bắt đầu từ mục tiêu ngoài cùng bên trái và tiến tới mục tiêu
ngoài cùng bên phải. Nếu không có mục tiêu nào được yêu cầu từ dòng lệnh, hình dạng sẽ tìm kiếm
tập tin mô tả cho một mục tiêu có tên .VỠ NỢ. Nếu mục tiêu đó tồn tại và có bất kỳ
các phần phụ thuộc được liên kết với nó, hình dạng sẽ cố gắng xây dựng từng phần phụ thuộc này,
từ trái sang phải. Nếu không .VỠ NỢ quy tắc đích đã được xác định trong tệp mô tả,
hình dạng sẽ cố gắng xây dựng Thành phố điện khí hóa phía tây dãy núi Rocky đầu tiên mục tiêu xác định in các Mô tả hồ sơ.

Khi hình dạng tạo mục tiêu, nó sẽ tiến hành như sau:

1)
xác định tên của các đối tượng nguồn cho một mục tiêu nhất định bằng cách duyệt qua
biểu đồ phụ thuộc, sử dụng các quy tắc mục tiêu được tích hợp sẵn và do người dùng cung cấp. Biểu đồ phụ thuộc
được đi qua độ sâu đầu tiên. Id của tất cả các quy tắc áp dụng đều được ghi lại.

2)
đối với từng đối tượng nguồn được yêu cầu, hãy tìm kho lưu trữ phiên bản nguồn trong kho lưu trữ.
Định vị kho lưu trữ phiên bản nguồn lấy thông tin hiện tại vpath vào tài khoản.

3)
liên kết từng tên của đối tượng nguồn với một phiên bản thích hợp theo ngụ ý của
quy tắc lựa chọn phiên bản hiện đang hoạt động. Ghi lại id của từng phụ thuộc bị ràng buộc. Nếu một
bản thân sự phụ thuộc là một đối tượng dẫn xuất, hãy sử dụng nó bộ nhớ cache chính như id.

4)
xây dựng nguồn gốc chính cho mục tiêu hiện tại từ tên mục tiêu và
hồ sơ thu được từ bước 1) và 3).

5)
tìm kiếm bộ đệm đối tượng dẫn xuất cho một đối tượng có khóa dẫn xuất giống hệt với
khóa được xây dựng ở bước 4).

6a)
nếu tìm thấy một đối tượng dẫn xuất thích hợp, một bản sao của nó sẽ được cài đặt trong bản dựng
thư mục, thay vì lấy nó từ nguồn của nó.

6b)
nếu không tìm thấy đối tượng dẫn xuất thích hợp, nó sẽ được tạo bằng cách lấy nó từ
các bộ phận. Đối tượng dẫn xuất thu được được đưa vào bộ đệm của đối tượng dẫn xuất và
được liên kết với khóa dẫn xuất từ ​​bước 4).

Các mục tiêu có danh sách phụ thuộc trống - và do đó có khóa phái sinh trống - luôn
(lại) có nguồn gốc.

Khi hình dạng xác định sự phụ thuộc của mục tiêu được yêu cầu, nó sẽ làm như vậy bằng cách đánh giá
hoặc các quy tắc mục tiêu rõ ràng hoặc bằng cách áp dụng - có thể là các quy tắc tiềm ẩn được tích hợp sẵn. Nếu như
quy tắc mục tiêu rõ ràng chỉ định các phụ thuộc đối tượng nhưng không có tập lệnh phái sinh trong quy tắc
body, hình dạng sẽ cố gắng cung cấp tập lệnh phái sinh mặc định thích hợp. Khi
đang tìm kiếm một tập lệnh phái sinh mặc định như vậy, hình dạng sẽ cố gắng tìm một ẩn ý có thể áp dụng được
quy tắc cho mục tiêu hiện tại. Một quy tắc ngầm được coi là có thể áp dụng được nếu nó có
mục tiêu hiện tại trong danh sách mục tiêu của nó (sau khi thay thế mẫu) và tất cả - rõ ràng,
và ngụ ý - tồn tại sự phụ thuộc. Nếu không có quy tắc ngầm nào được cho là có thể áp dụng được, hãy định hình
tìm kiếm .VỠ NỢ quy tắc mục tiêu. Nếu một quy tắc như vậy tồn tại và nếu nó có liên quan
tập lệnh phái sinh trong nội dung quy tắc của nó, tập lệnh này sẽ được cung cấp dưới dạng tập lệnh phái sinh mặc định
kịch bản. Nếu cả hai khả năng đều không dẫn đến tập lệnh phái sinh mặc định, hãy định hình
bỏ cuộc.

Nguồn gốc Đối tượng Bộ nhớ đệm

Trước khi bắt đầu quá trình dẫn xuất cho một mục tiêu được yêu cầu, nó sẽ cố gắng tìm một
đối tượng dẫn xuất phù hợp trong bộ đệm đối tượng dẫn xuất phù hợp với các thuộc tính được yêu cầu.
Hình dạng được dựa trên nguồn gốc chính khái niệm về đối tượng mục tiêu Khóa dẫn xuất là
được xây dựng theo thuật toán mô tả ở trên. Các thông số liên quan đi vào
khóa dẫn xuất là of phụ thuộc id, Các mục tiêu loại trừ id, Các of
sản xuất thành phần, Các xây dựng nền tảng (thường được xác định bởi macro LOẠI CHỦ; nếu cái này
macro không được xác định, hình dạng lấy id máy chủ làm nền tảng xây dựng) và thuộc tính
mở rộng tình trạng của từng đối tượng nguồn. Khi một đối tượng đã được tạo ra, hình dạng sẽ lưu trữ nó
trong bộ đệm đối tượng dẫn xuất và đánh dấu nó bằng thuộc tính khóa dẫn xuất. Cho một
dấu vết chi tiết về việc xử lý bộ nhớ đệm đối tượng dẫn xuất của hình dạng và việc sử dụng các khóa dẫn xuất,
chạy hình với -D công tắc điện.

Lệnh Thực hiện

Khi một mục tiêu cần được bắt nguồn (lại), hình dạng sẽ thực hiện các lệnh liên quan đến
mục tiêu. Trước khi các lệnh được thực thi, hình dạng sẽ thiết lập bối cảnh thực thi lệnh. Các
đối tượng phiên bản của phần phụ thuộc của mục tiêu được cài đặt dưới dạng tệp thông thường trong tệp
hệ thống. Nếu cần, hình dạng sẽ truy xuất các đối tượng nguồn từ kho lưu trữ kiểm soát phiên bản. Nếu như
một tệp có tên đối tượng đã tồn tại ở nơi có phiên bản
được cài đặt, hình dạng sẽ tạm thời di chuyển nó đến ATFS thư mục con. Sau lệnh
tập lệnh đã hoàn thành, hình dạng sẽ khôi phục trạng thái ban đầu của tất cả các thư mục bị ảnh hưởng.

Shape thực thi một dòng lệnh bằng cách khởi động chương trình được tham chiếu trong $(VỎ) vĩ mô,
và mở một đường ống cho quá trình kết quả. Dòng lệnh được ghi vào đường ống và
do đó được gửi đến $(VỎ) đầu vào tiêu chuẩn của quy trình.

Mỗi dòng lệnh trong nội dung quy tắc được thực thi bởi một quy trình riêng biệt. Như vậy,
trạng thái thực thi của các lệnh riêng biệt không được giữ nguyên. Nếu cần nhiều lệnh
dựa vào trạng thái thực thi của các lệnh trước đó, tất cả các lệnh này phải xảy ra trong một
dòng lệnh duy nhất. Điều này có thể thực hiện được với hàng sự liên tục (xem phần trên Cú pháp
Structure , bên trên).
LƯU Ý: nhiều trình thông dịch lệnh sử dụng ký tự ``$'' làm ký hiệu đặc biệt (thường là
tham chiếu biến). Đảm bảo chuyển các ký tự ``$'' trong lệnh tới $(VỎ)
xử lý bằng cách sử dụng macro đặc biệt ``$$'' (xem phần về Macro dự án, bên trên).

TIỀN LƯƠNG


Để tạo thuận lợi cho việc di cư từ làm cho(1), hình dạng được thiết kế để tương thích hướng lên trên
với Makefile. Mặc dù hầu hết các tính năng của tệp mô tả của nhãn hiệu đều có sẵn ở dạng hình dạng,
có một số điểm không tương thích có thể cần được giải quyết. Có tồn tại
cũng có một số phần mở rộng phổ biến của chương trình sản xuất ban đầu (ví dụ: Sun's Make, HP's
Make, GNU Make, nmake, v.v.) cung cấp nhiều tính năng đặc biệt khác nhau không được hỗ trợ bởi
khác tạo phần mở rộng hoặc theo hình dạng. Khi việc di chuyển từ sản xuất sang hình dạng được lên kế hoạch, nó
nên kiểm tra xem các phần mở rộng đặc biệt hoặc các tính năng không tương thích có được sử dụng hay không.

Tính năng không hỗ trợ by định hình

Kép đại tràng quy tắc
Quy tắc dấu hai chấm kép liên kết cùng một mục tiêu với các tập lệnh phái sinh khác nhau.
Loại quy tắc này rất hữu ích để hỗ trợ các dẫn xuất khác nhau cho một mục tiêu tùy thuộc vào
phụ thuộc nào đã lỗi thời. Bởi vì hình dạng căn cứ vào quyết định của nó có nên
bắt nguồn từ nguồn gốc chính, thay vì chỉ ghi dấu thời gian sửa đổi tệp,
loại quy tắc này không có ý nghĩa gì về mặt hình thức.

lưu trữ hội viên mục tiêu
Mục tiêu thành viên lưu trữ là các đối tượng sống trong một tệp lưu trữ (xem ar(1)) hơn là
hơn hệ thống tập tin. Trong các kho lưu trữ này, đưa ra các quyết định dựa trên cơ sở
dấu thời gian sửa đổi của tệp nguồn và ngày nhập lưu trữ. Không có cách nào
for hình dạng để mô phỏng khái niệm khóa phái sinh cho các thành viên lưu trữ.
Tuy nhiên, việc bảo trì các kho lưu trữ rất dễ dàng nhờ hình dạng, bởi vì tất cả dữ liệu được biên dịch
các tệp đối tượng được duy trì trong bộ đệm đối tượng dẫn xuất. Nếu nguồn của một đối tượng
được lưu trữ trong kho lưu trữ đã được sửa đổi, hình dạng có thể lấy lại đối tượng này và
thay thế có chọn lọc mục trong kho lưu trữ.

SCCS công cụ
Để cung cấp hỗ trợ cơ bản cho quá trình phát triển theo định hướng nhóm, hãy thực hiện
cho phép truy xuất phiên bản mới nhất của tệp nguồn từ kho lưu trữ SCCS.
Do quy ước đặt tên bất tiện cho các tệp lưu trữ phiên bản SCCS, đặc biệt
hỗ trợ xử lý các kho lưu trữ này phải được xây dựng sẵn. Bởi vì hình dạng là
tích hợp chặt chẽ với ATFS kho lưu trữ đối tượng phiên bản, không cần
bất kỳ sự hỗ trợ đặc biệt nào của SCCS.

Reduct ® mục tiêu
Hình dạng không nhận ra các mục tiêu đặc biệt .QUÝ GIÁ:.PHỤ LỤC:. Các
Mục tiêu .PRECIOUS trong Makefiles có mục đích ngăn chặn việc xóa một cách tốn kém
các mục tiêu trung gian dẫn xuất (theo mặc định, thực hiện xóa các mục tiêu trung gian).
Bởi vì hình dạng lưu trữ các mục tiêu trung gian trong bộ đệm đối tượng dẫn xuất nên không có
cần tính năng .PRECIOUS. Để ngăn chặn việc lưu vào bộ nhớ đệm có dung lượng lớn, vô dụng
mục tiêu trung gian, hãy sử dụng .NOBPOOL: mục tiêu đặc biệt (xem phần về Reduct ®
Mục tiêu, bên trên). Mục tiêu .SUFFIXES trong Makefiles có mục đích giới thiệu các tính năng mới
các loại hậu tố vào công cụ phái sinh của hãng sản xuất và để xác định thứ tự trong đó
quy tắc ngầm (hậu tố quy tắc trong thuật ngữ make) được áp dụng. Về hình dạng, hậu tố mới
các loại có thể được thêm một cách linh hoạt, chỉ bằng cách đưa ra các quy tắc tiềm ẩn mới. Hơn thế nữa,
hình dạng có một thuật toán thông minh xác định quy tắc ngầm áp dụng.

Tính năng với khác nhau ngữ nghĩa

Môi trường Biến
Nhiều chương trình yêu cầu nhập toàn bộ tập hợp các biến môi trường dưới dạng macro
định nghĩa vào quá trình xây dựng. Điều này đôi khi có thể tạo ra kết quả đáng ngạc nhiên.
Về hình dạng, các biến môi trường được nhập rõ ràng bằng NHẬP KHẨU đặc biệt
vĩ mô.

? Macro
Trong quy tắc mục tiêu của make, tham chiếu macro đặc biệt $? được thay thế bằng tên
trong số các tên tệp phụ thuộc đã được cập nhật kể từ khi mục tiêu hiện tại có
được bắt nguồn. Bởi vì hình dạng căn cứ vào quyết định của nó có xuất phát từ khái niệm về
nguồn gốc chính, chứ không chỉ là dấu thời gian sửa đổi tập tin, ? macro không thể
được xác định chính xác. Thay vào đó, hình dạng thay thế toàn bộ danh sách phụ thuộc
tên - cập nhật hay không.

Sử dụng hình dạng trực tuyến bằng dịch vụ onworks.net


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

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

  • 1
    Psi
    Psi
    Psi là XMPP mạnh mẽ đa nền tảng
    khách hàng được thiết kế cho người dùng có kinh nghiệm.
    Có sẵn các bản dựng dành cho MS
    Windows, GNU/Linux và macOS.. Đối tượng:
    Người dùng cuối...
    Tải xuống Psi
  • 2
    Blobby vô-lê 2
    Blobby vô-lê 2
    Tiếp nối chính thức của nổi tiếng
    Trò chơi điện tử Blobby Volley 1.x..
    Đối tượng: Người dùng cuối / Máy tính để bàn. Người sử dụng
    giao diện: OpenGL, SDL. Lập trình
    Ngôn ngữ: C++, Lua. C...
    Tải xuống Blobby Volley 2
  • 3
    SuiteCRM
    SuiteCRM
    SuiteCRM là Khách hàng từng đoạt giải thưởng
    Quản lý mối quan hệ (CRM)
    ứng dụng do tác giả mang đến cho bạn
    và người bảo trì, SalesAgility. Nó là
    thế giới ...
    Tải xuống SuiteCRM
  • 4
    quản trị viên quyền lực
    quản trị viên quyền lực
    Poweradmin là một DNS dựa trên web
    công cụ quản trị cho máy chủ PowerDNS.
    Giao diện có hỗ trợ đầy đủ cho hầu hết
    các tính năng của PowerDNS. Nó có đầy đủ
    ủng hộ...
    Tải xuống Poweradmin
  • 5
    Khung Web Gin
    Khung Web Gin
    Gin là một web framework cực kỳ nhanh
    được viết bằng Golang có thể thực hiện tối đa
    Nhanh hơn 40 lần, nhờ vào
    API giống martini và phiên bản tùy chỉnh của
    httprout ...
    Tải xuống Gin Web Framework
  • 6
    CEREUS LINUX
    CEREUS LINUX
    CEREUS LINUX dựa trên MX LINUX với
    nhiều loại khác nhau của các bản ghi. Đây là
    một ứng dụng cũng có thể được tìm nạp
    từ
    https://sourceforge.net/projects/cereu...
    Tải xuống CEREUS LINUX
  • Khác »

Lệnh Linux

  • 1
    abl
    abl
    abl - Đại diện tiền tố cho
    các hàm boolean MÔ TẢ:
    libablmmm.a là một thư viện cho phép
    biểu diễn hàm boolean trong một
    Dạng giống LISP. MỘT ...
    Chạy abl
  • 2
    một quyển sách
    một quyển sách
    tàu - chương trình sổ địa chỉ dựa trên văn bản
    ...
    Chạy sách
  • 3
    coqchk.opt
    coqchk.opt
    coqchk - Trình kiểm tra bằng chứng Coq được biên dịch
    người xác minh thư viện ...
    Chạy coqchk.opt
  • 4
    coqdep
    coqdep
    coqdep - Tính toán liên mô-đun
    phụ thuộc cho các chương trình Coq và Caml ...
    Chạy coqdep
  • 5
    trang web
    trang web
    ftangle,fweave - Bộ xử lý WEB cho C,
    C ++, Fortran, Ratfor và TeX ...
    Chạy fweb
  • 6
    bánh rán
    bánh rán
    quay tự do � nhạc kịch vòng lặp trực tiếp
    dụng cụ ...
    Chạy fweelin
  • Khác »

Ad