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
maketenta 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.cnã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.cfoi criada. - Todas as dependências para
testsã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 .