Lệnh make - Linux Command - Lệnh Unix

make - GNU tạo tiện ích để duy trì các nhóm chương trình

Tóm tắc

làm cho [ -f makefile ] [tùy chọn] ... mục tiêu ...

Cảnh báo

Trang này là một trích đoạn của tài liệu mà GNU tạo ra. Nó chỉ được cập nhật đôi khi vì dự án GNU không sử dụng nroff. Để biết đầy đủ, tài liệu hiện tại, hãy tham khảo tệp Info.info được tạo từ tệp nguồn make.texinfo của Texinfo .

Sự miêu tả

Mục đích của tiện ích make là xác định tự động phần nào của một chương trình lớn cần được biên dịch lại và đưa ra các lệnh để biên dịch lại chúng. Hướng dẫn này mô tả việc thực hiện GNU của make , được viết bởi Richard Stallman và Roland McGrath. Ví dụ của chúng tôi cho thấy các chương trình C vì chúng là phổ biến nhất, nhưng bạn có thể sử dụng với bất kỳ ngôn ngữ lập trình nào có trình biên dịch có thể chạy bằng lệnh shell. Trong thực tế, làm cho không giới hạn các chương trình. Bạn có thể sử dụng nó để mô tả bất kỳ nhiệm vụ nào mà một số tệp phải được cập nhật tự động từ những người khác bất cứ khi nào những người khác thay đổi.

Để chuẩn bị sử dụng make , bạn phải viết một tệp gọi là makefile mô tả các mối quan hệ giữa các tệp trong chương trình của bạn và các trạng thái để cập nhật từng tệp. Trong một chương trình, thông thường các tập tin thực thi được cập nhật từ các tập tin đối tượng, mà lần lượt được thực hiện bằng cách biên dịch các tập tin nguồn.

Khi một tệp makefile phù hợp tồn tại, mỗi khi bạn thay đổi một số tệp nguồn, lệnh shell đơn giản này:

chế tạo

đủ để thực hiện tất cả các recompilations cần thiết. Chương trình tạo sử dụng cơ sở dữ liệu của tệp makefile và các lần sửa đổi cuối cùng của tệp để quyết định tệp nào cần được cập nhật. Đối với mỗi tệp đó, nó phát ra các lệnh được ghi trong cơ sở dữ liệu.

thực hiện các lệnh trong makefile để cập nhật một hoặc nhiều tên đích, trong đó tên thường là một chương trình. Nếu không có tùy chọn -f , hãy tìm kiếm các tệp makefiles GNUmakefile , makefileMakefile theo thứ tự đó.

Thông thường bạn nên gọi makefile của bạn hoặc makefile hoặc Makefile . (Chúng tôi khuyên bạn nên Makefile vì nó xuất hiện nổi bật gần đầu danh sách thư mục, ngay gần các tệp quan trọng khác như README .) Tên đầu tiên được chọn, GNUmakefile , không được đề xuất cho hầu hết các tệp makefiles. Bạn nên sử dụng tên này nếu bạn có một makefile dành riêng cho GNU, và sẽ không được hiểu bởi các phiên bản khác của make . Nếu makefile là `- ', đầu vào tiêu chuẩn được đọc.

cập nhật mục tiêu nếu nó phụ thuộc vào các tệp tiên quyết đã được sửa đổi kể từ khi mục tiêu được sửa đổi lần cuối hoặc nếu mục tiêu không tồn tại.

TÙY CHỌN

-b

-m

Các tùy chọn này được bỏ qua để tương thích với các phiên bản tạo khác .

-C dir

Thay đổi thư mục dir trước khi đọc các makefiles hoặc làm bất cứ điều gì khác. Nếu có nhiều tùy chọn -C được chỉ định, mỗi tùy chọn được giải thích tương đối so với các tùy chọn trước đó: -C / -C vv tương đương với -C / etc. Điều này thường được sử dụng với các lời gọi đệ quy của make .

-d

In thông tin gỡ lỗi ngoài việc xử lý thông thường. Thông tin gỡ lỗi cho biết tệp nào đang được xem xét để làm lại, tệp nào được so sánh và kết quả là gì, tệp nào thực sự cần được làm lại, quy tắc ngầm được xem xét và được áp dụng --- mọi thứ thú vị về cách quyết định phải làm gì.

-e

Cung cấp cho các biến được lấy từ ưu tiên môi trường so với các biến từ makefiles.

-tập tin

Sử dụng tệp dưới dạng tệp makefile.

-tôi

Bỏ qua tất cả các lỗi trong các lệnh được thực hiện để làm lại các tệp.

-I dir

Chỉ định một thư mục thư mục để tìm kiếm các tệp makefiles được bao gồm. Nếu một số tùy chọn -I được sử dụng để chỉ định một số thư mục, các thư mục được tìm kiếm theo thứ tự được chỉ định. Không giống như các đối số cho các cờ thực hiện khác , các thư mục được cung cấp với cờ -I có thể đến ngay sau cờ: -I dir được cho phép, cũng như -I dir. Cú pháp này được cho phép tương thích với cờ -I của bộ tiền xử lý C.

-j công việc

Chỉ định số lượng lệnh (lệnh) để chạy đồng thời. Nếu có nhiều hơn một tùy chọn -j , tùy chọn cuối cùng có hiệu lực. Nếu tùy chọn -j được đưa ra mà không có đối số, việc thực hiện sẽ không giới hạn số lượng công việc có thể chạy đồng thời.

-k

Tiếp tục càng nhiều càng tốt sau khi một lỗi. Trong khi mục tiêu thất bại, và những mục tiêu phụ thuộc vào nó, không thể được làm lại, các phụ thuộc khác của các mục tiêu này có thể được xử lý tất cả như nhau.

-l

-l tải

Chỉ định rằng không có công việc mới (lệnh) nên được bắt đầu nếu có những công việc khác đang chạy và tải trung bình ít nhất là tải (một số dấu phẩy động). Không có đối số, loại bỏ giới hạn tải trước đó.

-n

In các lệnh sẽ được thực hiện, nhưng không thực thi chúng.

-tập tin

Không làm lại tập tin ngay cả khi nó cũ hơn phụ thuộc của nó, và không làm lại bất cứ điều gì trên tài khoản của những thay đổi trong tập tin . Về cơ bản các tập tin được coi là rất cũ và các quy tắc của nó được bỏ qua.

-p

In cơ sở dữ liệu (các quy tắc và các giá trị biến) mà kết quả từ việc đọc các makefiles; sau đó thực hiện như bình thường hoặc theo quy định khác. Điều này cũng in thông tin phiên bản được đưa ra bởi công tắc -v (xem bên dưới). Để in cơ sở dữ liệu mà không cố gắng làm lại bất kỳ tệp nào, hãy sử dụng make -p -f / dev / null.

-q

`` Chế độ câu hỏi ''. Không chạy bất kỳ lệnh nào, hoặc in bất kỳ thứ gì; chỉ trả lại trạng thái thoát bằng 0 nếu các mục tiêu được chỉ định đã được cập nhật, không phải khác.

-r

Loại bỏ việc sử dụng các quy tắc ngầm định được tích hợp sẵn. Ngoài ra, hãy xóa danh sách hậu tố mặc định cho các quy tắc hậu tố.

-S

Hoạt động im lặng; không in các lệnh khi chúng được thực hiện.

-S

Hủy hiệu ứng của tùy chọn -k . Điều này là không bao giờ cần thiết ngoại trừ trong một đệ quy làm cho nơi -k có thể được thừa hưởng từ cấp cao nhất thực hiện thông qua MAKEFLAGS hoặc nếu bạn đặt -k trong MAKEFLAGS trong môi trường của bạn.

-t

Chạm vào các tệp (đánh dấu chúng được cập nhật mà không thực sự thay đổi chúng) thay vì chạy các lệnh của chúng. Điều này được sử dụng để giả vờ rằng các lệnh đã được thực hiện, để đánh lừa các yêu cầu thực hiện trong tương lai.

-v

In phiên bản của chương trình tạo cộng với bản quyền, danh sách tác giả và thông báo rằng không có bảo hành.

-w

In thư có chứa thư mục làm việc trước và sau khi xử lý khác. Điều này có thể hữu ích cho việc theo dõi lỗi từ các tổ phức tạp của các lệnh tạo đệ quy.

-W tệp

Giả sử rằng tệp đích đã được sửa đổi. Khi được sử dụng với cờ -n , điều này cho bạn thấy điều gì sẽ xảy ra nếu bạn sửa đổi tệp đó. Không có -n , nó gần như giống như việc chạy lệnh cảm ứng trên tệp đã cho trước khi chạy, ngoại trừ thời gian sửa đổi chỉ thay đổi trong trí tưởng tượng của việc tạo .