La plupart des applications Linux sont compilées avec:
make
make install clean
Comme je l'ai compris, make prend les noms des cibles de construction comme arguments. Il en install
va de même pour une cible qui copie certains fichiers, puis clean
une cible qui supprime les fichiers temporaires.
Mais quelle cible make
construira si aucun argument n'est spécifié (par exemple la première commande dans mon exemple)?
all
n'est qu'une convention.make install
in sudo, plutôt que la version entière.include
est un autre makefile, dont la première cible est%.o : %.cpp
. Donc, la cible par défaut est ... de créer tous les fichiers .cpp?Pour épargner aux autres quelques secondes et leur éviter d'avoir à lire le manuel, voici la réponse courte. Ajoutez ceci en haut de votre fichier make:
mytarget sera désormais la cible exécutée si "make" est exécuté et qu'aucune cible n'est spécifiée.
Si vous avez une ancienne version de make (<= 3.80), cela ne fonctionnera pas. Si tel est le cas, vous pouvez faire ce que mentionne anon, ajoutez simplement ceci en haut de votre fichier make:
Références: https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html
la source
GNU Make vous permet également de spécifier la cible de création par défaut en utilisant une variable spéciale appelée
.DEFAULT_GOAL
. Vous pouvez même annuler la définition de cette variable au milieu du Makefile, ce qui fait que la prochaine cible du fichier devient la cible par défaut.Réf: Le manuel Gnu Make - Variables spéciales
la source