Makefiles seguem este formato (os Makefiles devem sempre usar tabulações em vez de espaços, já que são necessários na maioria (senão em todas) implementações de make
):
target: dependencies
operations to build target
- O alvo é o que você está disposto a construir / compilar / criar. Pode haver vários deles, e eles devem ser criados na ordem Makefile, a menos que as dependências precisem ser atendidas primeiro. O primeiro destino em seu arquivo é chamado de padrão de destino , é o que
make
tenta criar quando você o chama sem argumentos. - As dependências são as diferentes partes necessárias para construir um destino.
Neste Makefile, você tem dois alvos:
- teste
- lex.yy.c
Como lex.yy.c
é uma dependência necessária para criar test
, ele será criado primeiro em test.l
. Uma vez gerado, será possível compilar test
. Basicamente, make
...:
- Tenta criar
test
. - Dependência não resolvida.
lex.yy.c
não existe (ou foi atualizado), ele precisa ser criado primeiro. - Operações de leitura para criar
lex.yy.c
. A execução deflex test.l
:lex.yy.c
foi criada. - Todas as dependências para
test
são atendidas. Executandog++ lex.yy.c -ll -o test
. -
test
é criado.
Informações adicionais: Para mais informações sobre makefiles, eu recomendaria The Linux Development Platform por Rafeeq Ur Rehman . Capítulo 4: Usando o GNU Make .