2015-06-12 18 views
5

Podczas dzisiejszego lunchu rozmawiałem z jednym z moich kolegów stażystów, który tego lata pracuje prawie wyłącznie w Makefile i wspomniał, że nie ma pojęcia, co $ (@: H) oznacza lub robi. Mój google-fu mnie zawodzi, ponieważ nie mogę go znaleźć nigdzie w sieci i miałem nadzieję, że wy możecie mi pomóc.

+0

To zmienna make o nazwie '@: H', która nie jest domyślną zmienną, o której mi wiadomo. Powinno to, o ile nie jest zdefiniowane gdzieś, rozwinąć się do pustego łańcucha. Czy na pewno jest to składnia, którą widziałeś? A nie "$ (@ D)" lub "$ (@: H = c)" lub podobne? –

+0

Twierdzi, że to, co zobaczył. Jeśli jest to inna niż domyślna zmienna, zakładam, że jest ona już zdefiniowana gdzie indziej w programie. Nigdy się nie dotknąłem Stwórz siebie, więc nie mam najmniejszego pojęcia. – Swammy

+0

To byłaby niezręczna zmienna, która zostałaby wybrana, ponieważ jest tak blisko ważnych zmiennych zastosowań. O ile, oczywiście, nie jest to GNU, a zamiast tego jest jakaś inna marka, gdzie to coś znaczy. –

Odpowiedz

3

Zakładając, że jest to GNU make, to jest to tylko rozszerzenie zmiennej o nazwie (o dziwnej nazwie) @:H. Która nie jest zmienną domyślną (i nie jest zmienną, którą można ustawić za pomocą normalnej składni przypisania) i byłaby dziwnym wyborem dla nazwy zmiennej, ponieważ jest bardzo zbliżona do rzeczywistych rozszerzeń zmiennych.

Jest o wiele bardziej prawdopodobne, że to odnosi się do BSD zrobić gdzie :H jest zmienną modyfikator który (wyciąg z man page):

: H

Zastępuje każde słowo w zmiennej ze wszystkim ale ostatni składnik.