2015-09-09 15 views
5

Trong một tập tin, tôi tìm thấy đoạn mã như dưới đây. Có bất kỳ sự khác biệt giữa create_file và run_debug? tôi có nghĩa là việc sử dụng. (dấu chấm) trước khi create_file giới thiệu bất kỳ chức năng nào như PHONY?ý nghĩa của từ. (dấu chấm) trước mục tiêu trong makefile

all:debug run_debug 
setup: .create_file 

.create_file: 
     cd /home/user1 
     touch file.txt 

run_debug: 
     @echo Building debug 
     cd /home/user1/debug 
+1

Có một sự khác biệt mà tôi biết: tên mục tiêu bắt đầu bằng dấu chấm không được xem xét khi xác định mục tiêu mặc định (mục được thực hiện khi bạn chỉ gọi là 'make'), trừ khi chúng cũng chứa dấu gạch chéo. –

Trả lời

7

Theo như tôi biết, nó chỉ có một mục đích (và trong mục đích này được xóa bởi cấu trúc xây dựng).

Từ How make Processes a Makefile:

Theo mặc định, make bắt đầu với mục tiêu đầu tiên (không phải mục tiêu mà tên bắt đầu bằng ‘.’). Đây được gọi là mục tiêu mặc định .

Vì vậy, hàng đầu . có nghĩa là thực hiện sẽ không coi mục tiêu đó là mục tiêu mặc định hợp lệ.

Nhưng, như được viết, mục tiêu all là mục tiêu đầu tiên trong tệp makefile này sẽ là mục tiêu mặc định để dấu chấm đầu ở đây không thực sự làm gì cả.

Điều đó nói rằng cả ba setup, run_debug.create_file mục tiêu nên được đánh dấu là .PHONY và có thể có những cách tốt hơn hầu hết được viết/etc.

Các vấn đề liên quan