Formateur de Makefile
Guide
Formateur de Makefile
Collez un Makefile et le formatage le normalise selon les règles strictes d'indentation par tabulation de GNU make. Les lignes de recette utilisant des espaces au lieu de tabulations (la cause la plus fréquente des erreurs « manque de séparateur » et un problème fréquent avec des Makefiles générés par IA) sont réparées automatiquement. Les espaces en fin de ligne, les lignes vides excessives et les espaces incohérents autour des affectations sont nettoyés dans la même passe, et chaque modification est signalée afin que vous puissiez l'auditer avant de le copier.
Comment utiliser
- Collez votre Makefile dans le panneau d'entrée — ou cliquez Essayez un exemple pour charger un exemple avec des problèmes intentionnels.
- Sélectionnez la largeur de tabulation (utilisée pour détecter les lignes indentées qui devraient être des tabulations).
- Activez les options de nettoyage : convertir les espaces en tabulations sur les lignes de recette, supprimer les espaces en fin de ligne, normaliser les suites de lignes vides, normaliser l'espace autour des affectations, et aligner optionnellement les affectations successives de variables.
- Revoyez le résumé des problèmes et la liste des corrections par ligne, puis copiez ou téléchargez le Makefile formaté.
Caractéristiques
- Réparation des tabulations des recettes – convertit les lignes de recette indentées par des espaces en lignes indentées par des tabulations (le seul type d'indentation accepté par GNU make).
- Classification intelligente des lignes – distingue les cibles, les affectations de variables, les conditions (
ifeq,else,endif), les directives (include,vpath,export) et les lignes de recette. - Espacement des affectations – normalise l'espace autour
=,:=,::=,?=,+=et!=. - Alignement optionnel de colonne – aligne les affectations successives de variables sur la même colonne de l'opérateur pour une meilleure lisibilité.
- Rapport des problèmes – chaque correction est affichée avec le numéro de ligne d'origine afin que vous puissiez vérifier les modifications.
- Sécurité des blocs définis – le contenu entre
defineetendefest conservé tel quel. - Entièrement côté client – votre Makefile ne quitte jamais le navigateur.
FAQ
-
Pourquoi GNU make exige-t-il des tabulations pour les lignes de recette ?
Le parser de Make utilise un seul caractère de tabulation comme préfixe inambigu qui marque une ligne comme faisant partie de la recette d'une règle. Ce choix date de la première version publique de make en 1977 et a été consolidé car les tabulations étaient un indicateur fiable, en tête de ligne, qui ne collidait pas avec les espaces à l'intérieur des affectations de variables ou des définitions de cibles. Même s'il a causé des décennies de confusion, modifier cette règle briserait silencieusement des millions de Makefiles existants, donc GNU make conserve la tabulation comme valeur par défaut de RECIPEPREFIX.
-
Quelle est la différence entre =, :=, ::=, ?=, += et != dans les Makefiles ?
L'affectation récursive (=) reporte l'expansion jusqu'à l'utilisation de la variable, donc les variables référencées sont recherchées à l'heure de l'utilisation. L'affectation simple (:=) et l'affectation POSIX simple (::=) évaluent immédiatement la partie de droite, donc la valeur est fixée au moment de la définition. L'affectation conditionnelle (?=) définit la variable uniquement si elle est actuellement non définie, ce qui est utile pour des valeurs par défaut que l'environnement peut surcharger. L'ajout d'affectation (+=) ajoute à la valeur existante, en préservant le goût récursif ou simple de la valeur originale. L'affectation de shell (!=) exécute la partie de droite comme une commande de shell et stocke le résultat, similaire aux backticks dans le shell.
-
Quelle est la différence entre une ligne de recette et une ligne de continuation ?
Une ligne de recette est la ligne indentée qui exécute comme partie des actions d'une règle ; dans make standard, elle doit commencer par un caractère de tabulation. Une ligne de continuation est toute ligne dont la ligne précédente se termine par un backslash, qui logiquement joint les deux lignes en une seule. Les lignes de continuation héritent du contexte de la ligne précédente, donc une ligne de recette continue est toujours une ligne de recette et une ligne d'affectation continue est toujours une affectation. L'indentation d'une ligne de continuation est purement esthétique et n'influence pas la façon dont make la parse.
-
Pourquoi les cibles .PHONY sont-elles nécessaires et comment influencent-elles le parsing ?
Une déclaration .PHONY indique à make que les noms listés ne sont pas des fichiers réels mais des étiquettes d'action, donc make doit toujours exécuter leurs recettes, quel que soit un fichier de même nom dans le répertoire de travail. Sans cela, un fichier nommé clean désactiverait silencieusement make clean car make considérerait la cible comme mise à jour. .PHONY ne change pas le parsing des recettes ni les règles d'indentation — les lignes de recette sous des cibles .PHONY doivent toujours commencer par un caractère de tabulation — mais elle modifie la logique de comparaison des dates afin que la recette soit considérée comme mise à jour à chaque exécution.
Installez nos extensions
Ajoutez des outils IO à votre navigateur préféré pour un accès instantané et une recherche plus rapide
恵 Le Tableau de Bord Est Arrivé !
Tableau de Bord est une façon amusante de suivre vos jeux, toutes les données sont stockées dans votre navigateur. D'autres fonctionnalités arrivent bientôt !
Outils essentiels
Tout voir Nouveautés
Tout voirMise à jour: Notre dernier outil a été ajouté le 4 mai 2026
