O que significa $ @ e $ em um makefile?

3

Estou vendo um makefile e ele tem os símbolos $ @ e $ < nisso. Eu nunca os vi, e o Google não mostra nenhum resultado sobre eles. Você sabe o que esses comandos fazem?

    
por John Smith 23.02.2014 / 15:44

2 respostas

11

De make manpage:

$@ é:

The file name of the target of the rule. If the target is an archive member, then ‘$@’ is the name of the archive file. In a pattern rule that has multiple targets (see Introduction to Pattern Rules), ‘$@’ is the name of whichever target caused the rule's recipe to be run.

$< é:

The name of the first prerequisite. If the target got its recipe from an implicit rule, this will be the first prerequisite added by the implicit rule.

Você pode ver o manual completo aqui .

    
por 23.02.2014 / 15:54
5

Para dar um exemplo: digamos que você tenha vários arquivos .c que você deseja compilar para programas individuais. Você pode escrever uma regra de criação para cada uma delas ou escrever uma regra para todas elas:

    %: %.c
            gcc -o "$@" "$<"

Esta regra significa: se você tiver um alvo de fabricação (digamos, programa) e um arquivo .c com o mesmo nome de base (program.c), você pode compilar o arquivo .c usando o gcc, dando a opção -o com o nome do alvo (gcc -o programa program.c).

    
por 23.02.2014 / 16:14

Tags