Eu estava usando um Makefile do livro " Advanced Linux Programming (2001)" [código] . Foi estranho para mim ver que o GNU make compila o código corretamente, sem especificar um compilador no Makefile. É como assar sem receita!
Esta é uma versão mínima do código:
test.c
int main(){}
Makefile
all: test
e fazer realmente funciona! Este é o comando que ele executa:
cc test.c -o test
Não encontrei nada útil na documentação. Como isso é possível?
PS Uma nota adicional: Mesmo o idioma não está especificado; Como test.cestá disponível, o GNU makeusa cc. Se existe test.cppou test.cc(quando não há test.c), ele usa g++(e não c++).
makeverifica sua geladeira e descobre que há farinha disponível e, em seguida, assa um bolo padrão para você a partir de sua receita interna. :-)
makepara ferver água, e usando suas regras internas,makesó vai descobrir como;)