Tentei tornar isso o mais simples possível, omitindo variáveis como $ (CC) e $ (CFLAGS) que geralmente são vistas em makefiles. Se você estiver interessado em descobrir isso, espero ter lhe dado um bom começo nisso.
Aqui está o Makefile que eu gosto de usar para fonte C. Sinta-se livre para usá-lo:
Ele usa os recursos curinga e patsubst do utilitário make para incluir automaticamente arquivos .c e .h no diretório atual, ou seja, quando você adiciona novos arquivos de código ao seu diretório, não precisa atualizar o Makefile. No entanto, se você quiser alterar o nome dos executáveis, bibliotecas ou sinalizadores do compilador gerados, basta modificar as variáveis.
Nos dois casos, não use o autoconf, por favor. Eu estou te implorando! :)
Para ser tecnicamente correto, acredito que você deve usar .PHONY: clean all defaultpara os destinos que devem ser usados na linha de comando. Além disso, o Autoconf / Automake não é tão ruim assim. Claro, eles se sentem horríveis, e se acostumar com eles é tão divertido quanto forçar sua cabeça a atravessar uma parede de tijolos, mas eles funcionam, e são bem desenvolvidos, e cobrem a maior parte de suas bases até a portabilidade, e facilitará sua vida muito depois que você se acostumar com o design horrível deles.
28711 Chris Lutz
Eu acho que isso funciona, mas pensei que se eu digitasse "make" no terminal, o programa deveria ser executado. É isso que eu recebo: gcc statsh.o -Wall -lm -o prog É possível apenas digitar make e executar o programa?
@ user69514: makesem argumentos geralmente constrói apenas seu software. Para executá-lo, use make run(disponível nesta resposta, mas não necessariamente em todos os Makefiles) ou execute-o diretamente:./program
você pode adicionar mais detalhes para explicar o que o seu Makefile faz
Federico
2
você pode realmente ser muito mais simples. Veja @anonymous 1 liner
Mark Lakata
0
Dependendo do número de cabeçalhos e de seus hábitos de desenvolvimento, convém investigar o gccmakedep. Este programa examina seu diretório atual e adiciona ao final do makefile as dependências do cabeçalho para cada arquivo .c / cpp. Isso é um exagero quando você tem 2 cabeçalhos e um arquivo de programa. No entanto, se você tiver mais de 5 pequenos programas de teste e estiver editando um dos 10 cabeçalhos, poderá confiar no make para reconstruir exatamente os programas que foram alterados pelas suas modificações.
Respostas:
Interessante, eu não sabia que o make padrão seria usar o compilador C, dadas as regras relativas aos arquivos de origem.
De qualquer forma, uma solução simples que demonstre conceitos simples do Makefile seria:
(lembre-se de que make exige tabulação, em vez de recuo de espaço, verifique isso ao copiar)
No entanto, para oferecer suporte a mais arquivos C, você precisará criar novas regras para cada um deles. Assim, para melhorar:
Tentei tornar isso o mais simples possível, omitindo variáveis como $ (CC) e $ (CFLAGS) que geralmente são vistas em makefiles. Se você estiver interessado em descobrir isso, espero ter lhe dado um bom começo nisso.
Aqui está o Makefile que eu gosto de usar para fonte C. Sinta-se livre para usá-lo:
Ele usa os recursos curinga e patsubst do utilitário make para incluir automaticamente arquivos .c e .h no diretório atual, ou seja, quando você adiciona novos arquivos de código ao seu diretório, não precisa atualizar o Makefile. No entanto, se você quiser alterar o nome dos executáveis, bibliotecas ou sinalizadores do compilador gerados, basta modificar as variáveis.
Nos dois casos, não use o autoconf, por favor. Eu estou te implorando! :)
fonte
.PHONY: clean all default
para os destinos que devem ser usados na linha de comando. Além disso, o Autoconf / Automake não é tão ruim assim. Claro, eles se sentem horríveis, e se acostumar com eles é tão divertido quanto forçar sua cabeça a atravessar uma parede de tijolos, mas eles funcionam, e são bem desenvolvidos, e cobrem a maior parte de suas bases até a portabilidade, e facilitará sua vida muito depois que você se acostumar com o design horrível deles.rm
: stackoverflow.com/questions/2989465/rm-rf-versus-rm-rfPor exemplo, este Makefile simples deve ser suficiente:
Observe que deve haver
<tab>
na próxima linha após a limpeza e execução, não espaços.ATUALIZAÇÃO Comentários abaixo aplicados
fonte
make
sem argumentos geralmente constrói apenas seu software. Para executá-lo, usemake run
(disponível nesta resposta, mas não necessariamente em todos osMakefile
s) ou execute-o diretamente:./program
basta. o resto está implícito
fonte
.c
arquivo, apenasprogram:
será necessário. Doce :)O arquivo make mais simples pode ser
fonte
Dependendo do número de cabeçalhos e de seus hábitos de desenvolvimento, convém investigar o gccmakedep. Este programa examina seu diretório atual e adiciona ao final do makefile as dependências do cabeçalho para cada arquivo .c / cpp. Isso é um exagero quando você tem 2 cabeçalhos e um arquivo de programa. No entanto, se você tiver mais de 5 pequenos programas de teste e estiver editando um dos 10 cabeçalhos, poderá confiar no make para reconstruir exatamente os programas que foram alterados pelas suas modificações.
fonte