{"id":2514,"date":"2019-10-15T10:50:40","date_gmt":"2019-10-15T08:50:40","guid":{"rendered":"https:\/\/www.troispointzero.fr\/le-blog\/\/"},"modified":"2020-02-19T11:14:00","modified_gmt":"2020-02-19T10:14:00","slug":"makefile","status":"publish","type":"post","link":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/","title":{"rendered":"Simplifiez-vous la vie avec le makefile"},"content":{"rendered":"\n

De quoi s\u2019agit-il ?<\/h2>\n\n\n\n

Un makefile est un fichier assez sp\u00e9cial car celui-ci contient un ensemble de commandes shell. Il permet ainsi de centraliser un ensemble d\u2019instructions \u00e0 ex\u00e9cuter au travers de target <\/strong>(i.e. commande sp\u00e9cifique), faisant ainsi office de raccourcis.<\/p>\n\n\n\n

Comment l\u2019utilise-t-on ?<\/h2>\n\n\n\n

C\u2019est relativement simple. Dans le r\u00e9pertoire contenant le makefile, il vous suffit simplement de taper make<\/strong>, et les commandes du makefile seront ex\u00e9cut\u00e9es. Un make <target> <\/strong>ex\u00e9cutera une commande sp\u00e9cifique.<\/p>\n\n\n\n

Quel est son int\u00e9r\u00eat ?<\/h2>\n\n\n\n

Supposons que vous travaillez sur un projet PHP<\/a>. Celui-ci contiendra certainement des d\u00e9pendances, back et\/ou front, une base de donn\u00e9es \u00e0 installer, etc. Habituellement, vous feriez cet ensemble d\u2019\u00e9tapes via votre terminal en saisissant une \u00e0 une chaque commande n\u00e9cessaire (composer install, npm install, cr\u00e9ation de la base de donn\u00e9es, g\u00e9n\u00e9ration du .env, supprimer les fichiers g\u00e9n\u00e9r\u00e9s, etc. etc.). Nous pourrions ainsi imaginer une target install<\/strong> dans le makefile afin de centraliser toutes ces commandes d\u2019installation de notre projet. Lancer un make install<\/strong> permettrait alors de tout initialiser sans efforts\u2026<\/p>\n\n\n\n

Commen\u00e7ons<\/h2>\n\n\n\n

Dans votre r\u00e9pertoire de travail pr\u00e9f\u00e9r\u00e9, lancez la commande suivante pour cr\u00e9er votre makefile<\/p>\n\n\n\n

touch Makefile<\/code><\/p>\n\n\n\n

Ouvrez le fichier et collez-y les lignes suivantes dans lesquelles trois t\u00e2ches vont pr\u00e9parer, installer et afficher de l\u2019aide :<\/p>\n\n\n\n

\"makefile-screen\"<\/figure><\/div>\n\n\n\n

Par d\u00e9faut, si vous lancez juste make dans votre terminal, la t\u00e2che ex\u00e9cut\u00e9e sera help<\/strong>. A vous de modifier cela comme bon vous semble gr\u00e2ce \u00e0 cette ligne :<\/p>\n\n\n\n

.DEFAULT_GOAL := prepare<\/code><\/p>\n\n\n\n

Sinon, le makefile ex\u00e9cute toujours la premi\u00e8re t\u00e2che trouv\u00e9e.<\/p>\n\n\n\n


\n\n\n\n

Essayons maintenant de tirer profit de la pleine puissance du makefile. Comme je vous l\u2019ai d\u00e9j\u00e0 dit, nous allons cr\u00e9er une t\u00e2che install<\/strong> pour qu\u2019elle puisse contenir un ensemble de commandes :<\/p>\n\n\n\n

install: clean download execute<\/code><\/p>\n\n\n\n

clean<\/strong> > pour supprimer le contenu d\u2019un fichier texte<\/p>\n\n\n\n

download<\/strong> > pour t\u00e9l\u00e9charger un script afin de conna\u00eetre les informations de sa machine (IP, etc.)<\/p>\n\n\n\n

execute<\/strong> > pour ex\u00e9cuter le script t\u00e9l\u00e9charg\u00e9<\/p>\n\n\n\n

Le makefile ressemble maintenant \u00e0 ceci :<\/p>\n\n\n\n

Mon r\u00e9pertoire contient \u00e0 cette \u00e9tape les fichiers suivants :<\/p>\n\n\n\n

\"makefilescreenshot\"<\/figure><\/div>\n\n\n\n

Lan\u00e7ons maintenant le make<\/strong> :<\/p>\n\n\n\n

\"screen-makefile\"<\/figure><\/div>\n\n\n\n

Comme vous pouvez le voir, les trois t\u00e2ches [clean, download, execute] ont bien \u00e9t\u00e9 ex\u00e9cut\u00e9es dans l\u2019ordre. Le fichier que nous avons t\u00e9l\u00e9charg\u00e9 est \u00e9galement bien pr\u00e9sent et le contenu du fichier souhait\u00e9 est bel et bien supprim\u00e9<\/p>\n\n\n\n

Bonus : g\u00e9n\u00e9rer automatiquement la description des commandes dans la t\u00e2che help<\/h2>\n\n\n\n

Ceci est possible en commentant chaque target par ##<\/strong>. Comme le makefile suivant vous le sugg\u00e8re :<\/p>\n\n\n\n

\"screenshotMakefile\"<\/figure><\/div>\n\n\n\n

Et voil\u00e0 la sortie :<\/p>\n\n\n\n

Conclusion<\/h2>\n\n\n\n

En utilisant un makefile, vous gagnerez du temps, notamment lors de la phase de d\u00e9veloppement d\u2019un projet. En effet, imaginez qu\u2019un coll\u00e8gue doit venir vous aider sur l’un de vos projets mais qu\u2019il ignore tout de son installation. Pr\u00e9parez-lui alors un makefile, cr\u00e9ez une target install<\/strong> et faites appel \u00e0 d\u2019autres targets en s\u00e9parant la logique et qui permettront d\u2019installer convenablement votre projet. En r\u00e9cup\u00e9rant les sources de votre projet, votre coll\u00e8gue devra alors seulement ex\u00e9cuter la commande make<\/strong> \u00e0 la racine de votre projet pour tout initialiser. Pratique non ?<\/p>\n","protected":false},"excerpt":{"rendered":"

De quoi s\u2019agit-il ? Un makefile est un fichier assez sp\u00e9cial car celui-ci contient un ensemble de commandes shell. Il permet ainsi de centraliser un ensemble d\u2019instructions \u00e0 ex\u00e9cuter au travers de target (i.e. commande sp\u00e9cifique), faisant ainsi office de raccourcis. Comment l\u2019utilise-t-on ? C\u2019est relativement simple. Dans le r\u00e9pertoire contenant le makefile, il vous […]<\/p>\n","protected":false},"author":10,"featured_media":2515,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15],"tags":[],"yoast_head":"\nGagnez du temps avec le Makefile - TroisPointZ\u00e9ro<\/title>\n<meta name=\"description\" content=\"Vous souhaitez optimiser vos d\u00e9veloppements ? Chez TroisPointZ\u00e9ro on vous propose de d\u00e9couvrir tous les secrets du fichier ultile Makefile.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gagnez du temps avec le Makefile - TroisPointZ\u00e9ro\" \/>\n<meta property=\"og:description\" content=\"Vous souhaitez optimiser vos d\u00e9veloppements ? Chez TroisPointZ\u00e9ro on vous propose de d\u00e9couvrir tous les secrets du fichier ultile Makefile.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/\" \/>\n<meta property=\"og:site_name\" content=\"TroisPointZ\u00e9ro - Agence digitale ultra-r\u00e9active - Paris, Vichy, Vesoul\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-15T08:50:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-02-19T10:14:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.troispointzero.fr\/content\/uploads\/2020\/02\/makefile-article.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"480\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"jordanProtin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TPZ_FR\" \/>\n<meta name=\"twitter:site\" content=\"@TPZ_FR\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"jordanProtin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/\"},\"author\":{\"name\":\"jordanProtin\",\"@id\":\"https:\/\/www.troispointzero.fr\/#\/schema\/person\/16f8c39f38d01a7c85820c537257f167\"},\"headline\":\"Simplifiez-vous la vie avec le makefile\",\"datePublished\":\"2019-10-15T08:50:40+00:00\",\"dateModified\":\"2020-02-19T10:14:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/\"},\"wordCount\":562,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.troispointzero.fr\/#organization\"},\"articleSection\":[\"Tutoriel\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/\",\"url\":\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/\",\"name\":\"Gagnez du temps avec le Makefile - TroisPointZ\u00e9ro\",\"isPartOf\":{\"@id\":\"https:\/\/www.troispointzero.fr\/#website\"},\"datePublished\":\"2019-10-15T08:50:40+00:00\",\"dateModified\":\"2020-02-19T10:14:00+00:00\",\"description\":\"Vous souhaitez optimiser vos d\u00e9veloppements ? Chez TroisPointZ\u00e9ro on vous propose de d\u00e9couvrir tous les secrets du fichier ultile Makefile.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.troispointzero.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simplifiez-vous la vie avec le makefile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.troispointzero.fr\/#website\",\"url\":\"https:\/\/www.troispointzero.fr\/\",\"name\":\"TroisPointZ\u00e9ro - Agence digitale ultra-r\u00e9active - Paris, Vichy, Vesoul\",\"description\":\"TroisPointZ\u00e9ro est une agence digitale ultra r\u00e9active : nous vous accompagnons dans vos projets web, mobile, prototypes (POC) depuis Paris, Vichy et Vesoul.\",\"publisher\":{\"@id\":\"https:\/\/www.troispointzero.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.troispointzero.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.troispointzero.fr\/#organization\",\"name\":\"TROISPOINTZERO SAS\",\"url\":\"https:\/\/www.troispointzero.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.troispointzero.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.troispointzero.fr\/content\/uploads\/2020\/03\/Logotype-TroisPointZero.png\",\"contentUrl\":\"https:\/\/www.troispointzero.fr\/content\/uploads\/2020\/03\/Logotype-TroisPointZero.png\",\"width\":159,\"height\":232,\"caption\":\"TROISPOINTZERO SAS\"},\"image\":{\"@id\":\"https:\/\/www.troispointzero.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/TPZ_FR\",\"https:\/\/www.linkedin.com\/company\/troispointzero-agence-digitale\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.troispointzero.fr\/#\/schema\/person\/16f8c39f38d01a7c85820c537257f167\",\"name\":\"jordanProtin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.troispointzero.fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e632e2cb5352600d6d7a2bc475e3c230?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e632e2cb5352600d6d7a2bc475e3c230?s=96&d=mm&r=g\",\"caption\":\"jordanProtin\"},\"url\":\"https:\/\/www.troispointzero.fr\/author\/jordanprotin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Gagnez du temps avec le Makefile - TroisPointZ\u00e9ro","description":"Vous souhaitez optimiser vos d\u00e9veloppements ? Chez TroisPointZ\u00e9ro on vous propose de d\u00e9couvrir tous les secrets du fichier ultile Makefile.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/","og_locale":"fr_FR","og_type":"article","og_title":"Gagnez du temps avec le Makefile - TroisPointZ\u00e9ro","og_description":"Vous souhaitez optimiser vos d\u00e9veloppements ? Chez TroisPointZ\u00e9ro on vous propose de d\u00e9couvrir tous les secrets du fichier ultile Makefile.","og_url":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/","og_site_name":"TroisPointZ\u00e9ro - Agence digitale ultra-r\u00e9active - Paris, Vichy, Vesoul","article_published_time":"2019-10-15T08:50:40+00:00","article_modified_time":"2020-02-19T10:14:00+00:00","og_image":[{"width":720,"height":480,"url":"https:\/\/www.troispointzero.fr\/content\/uploads\/2020\/02\/makefile-article.png","type":"image\/png"}],"author":"jordanProtin","twitter_card":"summary_large_image","twitter_creator":"@TPZ_FR","twitter_site":"@TPZ_FR","twitter_misc":{"\u00c9crit par":"jordanProtin","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#article","isPartOf":{"@id":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/"},"author":{"name":"jordanProtin","@id":"https:\/\/www.troispointzero.fr\/#\/schema\/person\/16f8c39f38d01a7c85820c537257f167"},"headline":"Simplifiez-vous la vie avec le makefile","datePublished":"2019-10-15T08:50:40+00:00","dateModified":"2020-02-19T10:14:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/"},"wordCount":562,"commentCount":0,"publisher":{"@id":"https:\/\/www.troispointzero.fr\/#organization"},"articleSection":["Tutoriel"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/","url":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/","name":"Gagnez du temps avec le Makefile - TroisPointZ\u00e9ro","isPartOf":{"@id":"https:\/\/www.troispointzero.fr\/#website"},"datePublished":"2019-10-15T08:50:40+00:00","dateModified":"2020-02-19T10:14:00+00:00","description":"Vous souhaitez optimiser vos d\u00e9veloppements ? Chez TroisPointZ\u00e9ro on vous propose de d\u00e9couvrir tous les secrets du fichier ultile Makefile.","breadcrumb":{"@id":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.troispointzero.fr\/le-blog\/makefile\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.troispointzero.fr\/le-blog\/makefile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.troispointzero.fr\/"},{"@type":"ListItem","position":2,"name":"Simplifiez-vous la vie avec le makefile"}]},{"@type":"WebSite","@id":"https:\/\/www.troispointzero.fr\/#website","url":"https:\/\/www.troispointzero.fr\/","name":"TroisPointZ\u00e9ro - Agence digitale ultra-r\u00e9active - Paris, Vichy, Vesoul","description":"TroisPointZ\u00e9ro est une agence digitale ultra r\u00e9active : nous vous accompagnons dans vos projets web, mobile, prototypes (POC) depuis Paris, Vichy et Vesoul.","publisher":{"@id":"https:\/\/www.troispointzero.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.troispointzero.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.troispointzero.fr\/#organization","name":"TROISPOINTZERO SAS","url":"https:\/\/www.troispointzero.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.troispointzero.fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.troispointzero.fr\/content\/uploads\/2020\/03\/Logotype-TroisPointZero.png","contentUrl":"https:\/\/www.troispointzero.fr\/content\/uploads\/2020\/03\/Logotype-TroisPointZero.png","width":159,"height":232,"caption":"TROISPOINTZERO SAS"},"image":{"@id":"https:\/\/www.troispointzero.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/TPZ_FR","https:\/\/www.linkedin.com\/company\/troispointzero-agence-digitale"]},{"@type":"Person","@id":"https:\/\/www.troispointzero.fr\/#\/schema\/person\/16f8c39f38d01a7c85820c537257f167","name":"jordanProtin","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.troispointzero.fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e632e2cb5352600d6d7a2bc475e3c230?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e632e2cb5352600d6d7a2bc475e3c230?s=96&d=mm&r=g","caption":"jordanProtin"},"url":"https:\/\/www.troispointzero.fr\/author\/jordanprotin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/posts\/2514"}],"collection":[{"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/comments?post=2514"}],"version-history":[{"count":0,"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/posts\/2514\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/media\/2515"}],"wp:attachment":[{"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/media?parent=2514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/categories?post=2514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.troispointzero.fr\/wp-json\/wp\/v2\/tags?post=2514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}