Tôi đọc một số hướng dẫn liên quan đến Makefiles nhưng đối với tôi nó vẫn không rõ ràng cho những gì mục tiêu "tất cả" là viết tắt của và những gì nó làm."Tất cả" đứng trong một tệp makefile là gì?
Bất kỳ ý tưởng nào?
Tôi đọc một số hướng dẫn liên quan đến Makefiles nhưng đối với tôi nó vẫn không rõ ràng cho những gì mục tiêu "tất cả" là viết tắt của và những gì nó làm."Tất cả" đứng trong một tệp makefile là gì?
Bất kỳ ý tưởng nào?
Một bản dựng, như Makefile hiểu nó, bao gồm rất nhiều mục tiêu. Ví dụ, để xây dựng một dự án bạn có thể cần
Nếu bạn thực hiện công việc này với makefile, bạn có thể làm cho mỗi người trong số các mục tiêu separatel y. Ví dụ: nếu bạn đã viết
make file1.o
nó sẽ chỉ tạo tệp đó, nếu cần.
Tên của all
không cố định. Nó chỉ là một cái tên thông thường; all
mục tiêu biểu thị rằng nếu bạn gọi, thực hiện sẽ tạo tất cả những gì cần thiết để tạo một bản dựng hoàn chỉnh. Đây thường là mục tiêu giả, không tạo bất kỳ tệp nào, nhưng chỉ phụ thuộc vào các tệp khác. Đối với ví dụ trên, việc xây dựng tất cả cần thiết là xây dựng tệp thi hành, các tệp khác được kéo vào dưới dạng phụ thuộc. Vì vậy, trong makefile nó trông như thế này:
all: executable1 executable2
all
mục tiêu thường là người đầu tiên trong makefile, vì nếu bạn chỉ cần viết make
trong dòng lệnh, mà không chỉ định mục tiêu, nó sẽ xây dựng các mục tiêu đầu tiên. Và bạn mong đợi nó là all
.
all
cũng thường là mục tiêu .PHONY
. Tìm hiểu thêm here.
Không chắc chắn nó là viết tắt của bất kỳ điều gì đặc biệt. Nó chỉ là một quy ước mà bạn cung cấp một quy tắc 'tất cả', và nói chung nó được sử dụng để liệt kê tất cả các tiểu mục tiêu cần thiết để xây dựng toàn bộ dự án, do đó tên 'tất cả'. Điều duy nhất đặc biệt về nó là thường xuyên mọi người sẽ đặt nó vào như là mục tiêu đầu tiên trong makefile, có nghĩa là chỉ cần gõ 'make' một mình sẽ làm điều tương tự như 'làm cho tất cả'.
Mục tiêu "tất cả" là ví dụ về mục tiêu giả - không có gì trên đĩa được gọi là "tất cả". Điều này có nghĩa là khi bạn thực hiện một "làm cho tất cả", hãy luôn nghĩ rằng nó cần xây dựng nó và thực hiện tất cả các lệnh cho mục tiêu đó. Những lệnh này thường sẽ là những lệnh xây dựng tất cả các sản phẩm cuối cùng mà makefile biết, nhưng nó có thể làm bất cứ điều gì.
Ví dụ khác về mục tiêu giả là "sạch" và "cài đặt" và chúng hoạt động theo cùng một cách.
Nếu bạn chưa đọc, bạn nên đọc GNU Make Manual, cũng là hướng dẫn tuyệt vời.
Hướng dẫn cho GNU Hãy đưa ra định nghĩa rõ ràng cho all
trong số list of standard targets.
Nếu tác giả của Makefile đang theo ước rằng sau đó mục tiêu all
nên:
make
, hãy thực hiện tương tự như make all
.Để đạt được 1 all
thường được định nghĩa là một mục tiêu .PHONY
mà phụ thuộc vào thực thi (s) hình thành nên toàn bộ chương trình:
.PHONY : all
all : executable
Để đạt được 2 all
nên hoặc là mục tiêu đầu tiên quy định tại tạo tệp hoặc được chỉ định làm mục tiêu mặc định:
Và đừng quên Mr.Proper (cố tình mrproper) và distclean ... – t0mm13b