L'extension ne serait pas du tout, et le fichier est appelé Makefile si vous voulez que GNU make le trouve automatiquement.
Make a des variables automatiques qui, à elles seules, vous permettent de contrôler une grande partie du processus de construction à partir de fichiers C/C++. Ces variables comprennent CC
, CPP
, CFLAGS
, CPPFLAGS
, CXX
, CXXFLAGS
et LDFLAGS
. Ceux-ci contrôleront les commutateurs vers le préprocesseur C/C++, le compilateur, l'objet de plateforme et l'éditeur de programme (le programme qui génère ce que l'on appelle "programme exécutable" ou "le programme que vous compilez"). GNU make inclut également un grand nombre de règles implicites conçues pour activer les programmes de construction à partir du code source C/C++, vous n'avez donc pas besoin de les écrire de zéro.
Par exemple, même sans un makefile, si vous essayez make foobar
, GNU Make tentera d'abord construire foobar.o
de foobar.c
ou foobar.cpp
si elle trouve soit, en invoquant le compilateur approprié, puis tentera de construire foobar
par l'assemblage (y compris la liaison) ses parties des bibliothèques système et foobar.o
. Bref, GNU Make sait comment construire le programme foobar
même sans makefile - grâce à des règles implicites. Vous pouvez voir ces règles en appelant Make avec le commutateur -p
, par ex. make -p
. Certaines personnes préfèrent s'appuyer sur GNU Rendre la base de données de règles implicite pour avoir des makefiles maigres et courts où seule la spécificité de leur projet est spécifiée, tandis que d'autres peuvent aller jusqu'à désactiver toute la base de données des règles implicites (-r
) et avoir le contrôle total du processus de construction en spécifiant tout à partir de zéro. Je ne ferai aucun commentaire sur la validité de l'une ou l'autre stratégie, mais rassurez-vous, les deux font du travail dans une certaine mesure.