J’aime les Makefile
(switowski.com)-
J’aime les Makefile. Cela fait plus de 10 ans que je les utilise pour la première fois. Même à l’époque, cela ressemblait à une technologie ancienne. Avec le temps, de nouveaux outils de build sont apparus puis ont disparu, mais les Makefile étaient toujours là. En participant à des projets, je m’y suis habitué, puis à un moment donné j’ai fini par les aimer. Aujourd’hui, c’est le premier outil d’automatisation que j’utilise quand je démarre un nouveau projet.
-
Si j’aime les Makefile, c’est parce qu’ils suivent une convention informelle qui met en place le même ensemble de commandes. Quand je découvre un nouveau projet et qu’il contient un fichier
Makefile, j’exécutemakeoumake build, puismake install, et le projet se construit et se configure. Ou bien cela me donne des informations sur d’éventuelles étapes supplémentaires. -
J’essaie d’appliquer la même convention dans mes propres projets. Quand j’ouvre un ancien dossier de projet et que j’exécute
make dev, cela effectue toutes les étapes nécessaires pour construire le projet et lancer le serveur de développement. Comme j’ai utilisé des technologies variées, chaque technologie avait ses propres commandes. Avec un Makefile, on peut facilement gérer même des projets qu’on n’a pas touchés depuis des mois, voire des années. -
Les Makefile sont simples. Je n’utilise ni conditions, ni flags, ni autres fonctionnalités complexes. La plupart des tâches se composent d’une ou plusieurs commandes shell. Je pourrais aussi écrire un script bash avec quelques fonctions, mais un Makefile est plus simple et plus rapide à écrire.
-
La plupart de mes projets personnels incluent des tâches courantes comme :
dev: démarrer le serveur de développementbuild: construire le projet (si une étape de build est nécessaire)deploy: déployer/publier le projet
-
Ce blog contient un Makefile simple avec une seule cible :
dev: npm run dev -
Dans des projets plus complexes, j’utilise un Makefile comme celui-ci :
# Lancer le serveur de développement dev: bundle exec jekyll serve --unpublished -w --config _config.yml,_config-dev.yml --livereload # Build des ressources build: npm run gulp build # Surveiller un dossier spécifique et traiter les ressources watch: npm run gulp watch -- --wip # Construire le site web en local, le chiffrer et le déployer sur les serveurs Netlify deploy: JEKYLL_ENV=production bundle exec jekyll build; \ make encrypt; \ netlify deploy --prod # Chiffrer le dossier "_site" encrypt: npx staticrypt _site/*.html -r -d _site -
Dans l’exemple ci-dessus, j’ignore l’existence des cibles phony. S’il existe un fichier nommé
dev,build,watch,deployouencrypt, le Makefile pourrait ne pas fonctionner comme prévu. -
GNU Make est extrêmement répandu. Sous Linux, il est probablement déjà installé. Je ne me souviens pas l’avoir installé explicitement sur mon MacBook non plus. Il a sans doute été installé avec d’autres outils. Make est simple et a moins de dépendances supplémentaires que d’autres outils de build. Cela peut être utile dans des environnements contraints. Il y a de fortes chances que Make soit déjà présent. Sinon, il est toujours possible d’exécuter manuellement les commandes du Makefile dans le shell.
-
Je ne suis pas opposé aux autres outils de build. Quand j’en découvre un nouveau, je trouve cela intéressant. Mais j’utilise toujours Make pour orchestrer différents outils.
Résumé de GN⁺
- Les Makefile facilitent la gestion grâce à un ensemble cohérent de commandes à travers différents projets.
- Leur syntaxe simple et leur faible nombre de dépendances les rendent utiles même dans des environnements limités.
- Ils peuvent être utilisés avec divers outils de build, ce qui leur donne une grande flexibilité.
- Parmi les outils offrant des fonctions similaires, on trouve
CMake,NinjaetGradle.
2 commentaires
Si votre
makefilene définit pas de dépendances, le remplacer parjustfileoffre une meilleure ergonomie.Avis Hacker News
Encouragement à utiliser Make
Les problèmes des Makefiles
Les avantages de Make
Utilisation des cibles PHONY
mtimePHONYDébat passionné autour de Make
Les usages variés de Make
Les limites de Make et les alternatives
configuremtimepour vérifier si les entrées sont à jour, mais cela peut poser des problèmesPassage aux justfiles
Utilisation simple du Makefile