Isso geralmente é feito com as regras do makefile, por exemplo, dado o test.c
, você seria capaz de fazer isso (mesmo sem ter um makefile):
make test
Da mesma forma, existem regras predefinidas para o g ++, dado o test2.cc
, você poderia fazer a mesma coisa:
make test2
Mas em qualquer um dos casos, você provavelmente precisa de bibliotecas. Fazer isso é o que os makefiles são bons (além de fornecer maneiras de compilar múltiplos objetos).
O gcc por si só não tem uma opção para simular regras de makefile. Se você quer uma ferramenta que faz isso, você poderia fazer um script de shell que faz o caso especial mencionado, por exemplo,
#!/bin/sh
for name in "$@"
do
case "$name" in
*.c)
gcc -o $(basename "$name") "$name"
;;
*.cc)
g++ -o $(basename "$name") "$name"
;;
*)
echo "ignoring $name, since it is not one of my files!"
;;
esac
done
Mas (veja o início da resposta), o script simplesmente torna explícito o recurso que as regras predefinidas para make
fornecem a você. Por outro lado, você poderia modificar o script para adicionar bibliotecas necessárias, e fazer isso em um lugar (ao invés de um conjunto de makefiles, o que parece ser o problema).
A propósito: se o gcc fornece automaticamente um sufixo ".exe" (quando você não o faz) depende da plataforma e da configuração do compilador. O sufixo não é útil em plataformas do tipo Unix e geralmente é opcional em coisas relacionadas, como o Cygwin.