Istnieją tutaj trzy niepowiązane zastosowania @
.
W $@
, znak @
to nazwa zmiennej automatycznej, której można użyć w regule. Wartość tej zmiennej jest celem budowanym przez regułę.
Gdy @
jest używane na samym początku wiersza przepisu (polecenia), zaraz po znaku tabulacji, powoduje, że polecenie nie jest drukowane, gdy ma być wykonane.
Postać @
gdzie indziej nie jest wyjątkowa.
Zatem w twoim przykładzie zbuduj program
:
file
Funkcja jest wywoływana. Zapisuje $^
w pliku zależności celu ( zmiennej automatycznej) program.in
.
Wykonywane jest dowolne polecenie przechowywane w zmiennej CMD
, wraz z parametrami przechowywanymi w zmiennej CMDFLAGS
plus parametr dodatkowy @program.in
. To, co to robi, zależy od tego, co CMD
jest.
Polecenie rm program.in
jest wykonywane bez uprzedniego wydrukowania.
Kilka poleceń traktuje parametr rozpoczynający się od @
jako wskazujący plik, z którego można odczytać więcej parametrów. Jest to konwencja DOS, która powstała, ponieważ DOS miał rygorystyczny limit długości linii poleceń i nie ma możliwości interpolacji wyniku polecenia w linię poleceń. Jest to rzadkie w świecie Uniksa, ponieważ Unix nie ma tych ograniczeń. Efekt przepisu jest więc prawdopodobnie taki sam jak
$(CMD) $(CMDFLAGS) $(OBJECTS)
Gilles „SO- przestań być zły”
źródło
>[email protected]
jest używany jako tryb pliku ... ale jest użyteczny na swój sposób .. dzięki cuonglm ...