Comment «make» app sait-elle la cible par défaut à construire si aucune cible n’est spécifiée?

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. Donc, install est une cible qui copie certains fichiers et après cela, clean est une cible qui supprime les fichiers temporaires.

Mais quelle cible va créer si aucun argument n’est spécifié (par exemple, première commande dans mon exemple)?

Par défaut, il commence par traiter la première cible qui ne commence pas par un ‘.’ alias l’objective par défaut ; pour ce faire, il peut avoir à traiter d’autres cibles – en particulier celles dont dépend la première cible. Le manuel GNU make couvre tous ces aspects et constitue une lecture étonnamment simple et informative.

Pour économiser quelques secondes et pour éviter de devoir lire le manuel, voici la réponse courte. Ajoutez ceci en haut de votre fichier de création:

 .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 ancienne version de make (<= 3.80), cela ne fonctionnera pas. Si tel est le cas, vous pouvez alors faire ce que fait anon, ajoutez simplement ceci en haut de votre fichier de création:

 .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 de création 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 fichier Make, ce qui fait que la cible suivante du fichier devient la cible par défaut.

Des choses vraiment intéressantes mais ésotériques. Mais je suis d’accord avec anon up – le manuel de make gnu est assez lisible. Vous pensez peut-être que vous n’avez pas besoin de connaître la plupart des choses, mais une fois que vous en avez une très complète, vous apprécierez vraiment certains trucs vraiment fantaisistes – manipulation de chaînes, fonctions de fichiers / répertoires, etc.

Ref: Le manuel de Gnu Make – Variables spéciales