2015-09-09 18 views
5

In einer make-Datei fand ich den Code-Ausschnitt wie unten. Gibt es einen Unterschied zwischen create_file und run_debug? ich meine den Gebrauch von. (Punkt) vor create_file einführen irgendeine Funktionalität wie PHONY?was bedeutet das? (Punkt) vor dem Ziel in 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

Es gibt einen Unterschied, den ich kenne: Zielnamen, die mit einem Punkt beginnen, werden nicht berücksichtigt, wenn make das Standardziel definiert (das ist, wenn Sie einfach 'make' aufrufen), außer sie enthalten auch Schrägstriche. –

Antwort

7

Soweit ich weiß, es hat nur einen Zweck (und in dieser Make-Datei, die hierzu von der Make-Datei Konstruktion vermieden wird).

Von How make Processes a Makefile:

standardmäßig make beginnt mit dem ersten Ziel (nicht Ziele, deren Namen beginnen mit ‘.’). Dies wird als Standardziel bezeichnet.

Also eine führende . bedeutet, dass make dieses Ziel nicht als gültiges Standardziel betrachten wird.

Aber wie geschrieben, das all Ziel ist das erste Ziel in diesem Makefile, so dass das Standardziel sein wird, so dass der führende Punkt hier eigentlich nichts tut.

Das heißt alle drei der setup, run_debug und .create_file Ziele sollten als .PHONY markiert werden und kann viel bessere Möglichkeiten werden geschrieben/etc haben.