2015-09-09 9 views
5

In un file make ho trovato il codice snip come di seguito. C'è qualche differenza tra create_file e run_debug? intendo l'uso di (punto) prima di create_file introdurre funzionalità come PHONY?qual è il significato per. (punto) prima del target nel 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'è una differenza che conosco: i nomi dei target che iniziano con un punto non vengono considerati quando make identifica l'obiettivo predefinito (quello che viene fatto quando si chiama 'make'), a meno che non contengano anche le barre. –

risposta

7

Per quanto so che ha un solo scopo (e in questo makefile tale scopo si ovvia dalla costruzione makefile).

Da How make Processes a Makefile:

Per impostazione predefinita, make inizia con il primo obiettivo (non obiettivi cui nomi iniziano con ‘.’). Questo è chiamato l'obiettivo predefinito .

Quindi un leader . significa che make non considererà tale obiettivo come un obiettivo predefinito valido.

Ma, come scritto, il target all è il primo obiettivo in questo makefile in modo che sia l'obiettivo predefinito in modo che il punto iniziale qui in realtà non faccia nulla.

Detto tutti e tre i setup, run_debug e .create_file obiettivi dovrebbero essere contrassegnati come .PHONY e possono avere molto migliori modi di essere scritta/etc.

Problemi correlati