2015-06-12 22 views
5

Stavo parlando con uno dei miei colleghi stagisti oggi a pranzo, che sta lavorando quasi esclusivamente in Makefile quest'estate, e ha detto che non ha idea di cosa significhi o faccia $ (@: H). Il mio google-fu mi sta fallendo, perché non riesco a trovarlo da nessuna parte sul web e speravo che voi ragazzi poteste aiutarmi.

+0

Questa è una variabile make con il nome '@: H' che non è una variabile predefinita di cui sono a conoscenza. In questo modo, se non definito da qualche parte, espandere alla stringa vuota. Sei sicuro che sia la sintassi che hai visto? E non '$ (@ D)' o '$ (@: H = c)' o simile? –

+0

Afferma che è quello che ha visto. Se si tratta di una variabile non predefinita, suppongo che sia già definita da qualche altra parte nel programma, quindi. Non ho mai toccato Make me stesso, quindi non ho il minimo indizio. – Swammy

+0

Questa sarebbe una variabile scomoda da scegliere perché è così vicina agli utilizzi variabili validi. A meno che, ovviamente, questo non sia il make di GNU ed è un altro make invece dove ciò significa qualcosa. –

risposta

3

Supponendo che questo sia GNU rendere quindi è solo l'espansione della variabile (stranamente denominata) @:H. Quale non è una variabile di default (e non è una variabile che può essere impostata con la normale sintassi di assegnazione) e sarebbe una scelta dispari per un nome di variabile per cominciare poiché è molto vicino alle espansioni di variabili reali.

E 'molto più probabile che questo si riferisce a BSD fare dove :H è un modificatore di variabile (estratto dal man page):

: H

Sostituisce ogni parola nella variabile con tutto ma l'ultimo componente.