La plupart des applications Linux sont compilées avec:
make
make install clean
Si j'ai bien compris, make prend les noms des cibles de construction comme arguments. Donc, install
est une cible qui copie certains fichiers, puis clean
est une cible qui supprime les fichiers temporaires.
Mais quelle cible make
construira-t-elle si aucun argument n'est spécifié (par exemple, la première commande dans mon exemple)?
Par défaut, il commence par traiter la première cible qui ne commence pas par un .
_ aka objectif par défaut ; pour ce faire, il devra peut-être traiter d'autres cibles, en particulier celles sur lesquelles repose la première cible.
Le GNU Make Manual couvre tout cela et constitue une lecture étonnamment simple et informative.
Pour éviter aux autres de quelques secondes et éviter de lire le manuel, voici la réponse courte. Ajoutez ceci en haut de votre fichier make:
.DEFAULT_GOAL := mytarget
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 version plus ancienne de make (<= 3.80), cela ne fonctionnera pas. Si tel est le cas, alors vous pouvez faire ce que mentionne anon, ajoutez simplement ceci en haut de votre fichier make:
.PHONY: default
default: mytarget ;
Références: https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html
GNU Make vous permet également de spécifier la cible make par défaut en utilisant une variable spéciale appelée .DEFAULT_GOAL
. Vous pouvez même désélectionner cette variable au milieu du Makefile, faisant de la cible suivante du fichier la cible par défaut.