{"id":21,"date":"2008-02-24T16:22:45","date_gmt":"2008-02-24T15:22:45","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=21"},"modified":"2008-03-15T10:35:19","modified_gmt":"2008-03-15T09:35:19","slug":"makefile-generique","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/","title":{"rendered":"C++ &#8211; Makefile g\u00e9n\u00e9rique"},"content":{"rendered":"<p>Voil\u00e0, vous avez pris un peu d&rsquo;assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et impossible \u00e0 g\u00e9rer surtout si en plus vous utilisez quelques librairies. La solution est d&rsquo;utiliser un fichier appel\u00e9 makefile. Un   makefile regroupe toutes les directives n\u00e9cessaires au compilateur et au lieur pour cr\u00e9er votre ex\u00e9cutable.<\/p>\n<p>Je vous propose ci-dessous un makefile g\u00e9n\u00e9rique qui devrait fonctionner dans la plupart des cas:<\/p>\n<pre class=\"codesource\">CC = g++\r\nCFLAGS = -Wall\r\nEXEC_NAME = nom_de_votre_ex\u00e9cutable\r\nINCLUDES =\r\nLIBS =\r\nOBJ_FILES = fichier_1.o fichier_2.o\r\nINSTALL_DIR = \/usr\/bin\r\n\r\n<strong>all<\/strong> : $(EXEC_NAME)\r\n\r\n<strong>clean<\/strong> :\r\n  rm $(EXEC_NAME) $(OBJ_FILES)\r\n\r\n$(EXEC_NAME) : $(OBJ_FILES)\r\n  $(CC) -o $(EXEC_NAME) $(OBJ_FILES) $(LIBS)\r\n\r\n%.o: %.cpp\r\n  $(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $&lt;\r\n\r\n%.o: %.cc\r\n  $(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $&lt;\r\n\r\n%.o: %.c\r\n  gcc $(CFLAGS) $(INCLUDES) -o $@ -c $&lt;\r\n\r\n<strong>install<\/strong> :\r\n  cp $(EXEC_NAME) $(INSTALL_DIR)<\/pre>\n<p>Voyons comment vous pouvez customiser ce makefile pour qu&rsquo;il s&rsquo;adapte \u00e0 vos besoins.<\/p>\n<p><em>CC=<\/em> le compilateur que vous utiliser. Ici, c&rsquo;est <em>g++<\/em> mais \u00e7a pourrait \u00eatre un autre.<\/p>\n<p><em>CFLAGS =<\/em> les options \u00e0 passer au compilateur. Dans ce cas-ci, <em>-Wall<\/em> active tous les warnings.<\/p>\n<p><em>EXEC_NAME =<\/em> le nom de l&rsquo;ex\u00e9cutable que vous d\u00e9sirez.<\/p>\n<p><em>INCLUDES =<\/em> le chemin vers les fichiers header n\u00e9cessaire \u00e0 la compilation. Par exemple, si vous utilisez la <em>glib2<\/em>, vous \u00e9crirez<br \/>\n<em>INCLUDES = -I\/usr\/include\/glib-2.0 -I\/usr\/lib\/glib-2.0\/include<\/em><br \/>\nNotez le switch <em>-I<\/em> devant le chemin.<\/p>\n<p><em>LIBS =<\/em> le chemin vers les librairies que vous utilisez. Par exemple dans le cas de la glib2  <em>LIBS =  -lglib-2.0<\/em> Le switch est <em>-l<\/em>. Si vous devez ajoutez une librairie statique et non plus un chemin vous ajoutez cette librairie avec son chemin directement. Pour reprendre notre exemple et y ajouter la librairie statique <em>\/usr\/lib\/libgpod.so<\/em>, vous le faites sur la m\u00eame ligne et sans switch: <em>LIBS = \/usr\/lib\/libgpod.so -lglib-2.0<\/em><\/p>\n<p><em>OBJ_FILES =<\/em> la liste des fichiers objets que vous devez obtenir.<\/p>\n<p><em>all : $(EXEC_NAME)<\/em> est ce qui va \u00eatre appel\u00e9 par make lorsque vous taper <em>$ make<\/em> dans une console.<\/p>\n<p><em>clean :<\/em> appel\u00e9 par make lorsque vous taper <em>$ make clean<\/em> dans une console. Ici, cela delete les fichiers <em>.o<\/em> du r\u00e9pertoire.<\/p>\n<p><em>install :<\/em> appel\u00e9 par make lorsque vous taper <em>$ make install<\/em> dans une console. Ici, cela copie l&rsquo;ex\u00e9cutable dans le r\u00e9pertoire INSTALL_DIR qui dvrait se trouver dans le path.<\/p>\n<p>Le reste sont des directives pour le compilateur et le lieur leur disant quoi faire en pr\u00e9sence d&rsquo;un fichier .cpp, .cc ou .c<\/p>\n<p><strong> ATTENTION:<\/strong> les lignes qui sont indent\u00e9es le sont au moyen d&rsquo;un caract\u00e8re TAB et non pas d&rsquo;espaces. C&rsquo;est important.<\/p>\n<p>Si vous utilisez <em>Geany<\/em>, L&rsquo;option <em>Make All<\/em> dans le menu <em>Construire<\/em> appelle <em>make<\/em> et lance le <em>all:<\/em> de votre makefile.<\/p>\n<p>Autre avantage des makefiles, seuls les fichiers modifi\u00e9s ont besoin d&rsquo;\u00eatre recompil\u00e9s. <em>Make<\/em> examine automatiquement les fichiers, d\u00e9termine ceux qui doivent \u00eatre recompil\u00e9s, lance le compilateur et s&rsquo;il y a lieu le lieur (<em>linker<\/em>). C&rsquo;est une vrai facilit\u00e9 et un r\u00e9el gain de temps pour le programmeur.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voil\u00e0, vous avez pris un peu d&rsquo;assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Voil\u00e0, vous avez pris un peu d&#039;assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Michel Leunen\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Autour de Linux | Ubuntu, linux, C++, audio, python, ...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"C++ \u2013 Makefile g\u00e9n\u00e9rique | Autour de Linux\" \/>\n\t\t<meta property=\"og:description\" content=\"Voil\u00e0, vous avez pris un peu d&#039;assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2008-02-24T15:22:45+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2008-03-15T09:35:19+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"C++ \u2013 Makefile g\u00e9n\u00e9rique | Autour de Linux\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Voil\u00e0, vous avez pris un peu d&#039;assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#article\",\"name\":\"C++ \\u2013 Makefile g\\u00e9n\\u00e9rique | Autour de Linux\",\"headline\":\"C++ &#8211; Makefile g\\u00e9n\\u00e9rique\",\"author\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#organization\"},\"datePublished\":\"2008-02-24T16:22:45+02:00\",\"dateModified\":\"2008-03-15T10:35:19+02:00\",\"inLanguage\":\"fr-FR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#webpage\"},\"articleSection\":\"C++\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.leunen.com\\\/linux\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/#listItem\",\"name\":\"C++\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/#listItem\",\"position\":2,\"name\":\"C++\",\"item\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#listItem\",\"name\":\"C++ &#8211; Makefile g\\u00e9n\\u00e9rique\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#listItem\",\"position\":3,\"name\":\"C++ &#8211; Makefile g\\u00e9n\\u00e9rique\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/#listItem\",\"name\":\"C++\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#organization\",\"name\":\"Autour de Linux\",\"description\":\"Ubuntu, linux, C++, audio, python, ...\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/\",\"name\":\"Michel Leunen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/41e08d5087493eaa9ce4ebd4e0a55ffb?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Michel Leunen\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#webpage\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/\",\"name\":\"C++ \\u2013 Makefile g\\u00e9n\\u00e9rique | Autour de Linux\",\"description\":\"Voil\\u00e0, vous avez pris un peu d'assurance, vous commencez \\u00e0 diviser votre code en plusieurs unit\\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \\u00e0 compiler et \\u00e0 lier ensemble pour en faire une application. Inconv\\u00e9nient, la ligne de commande \\u00e0 taper au clavier dans une console devient beaucoup trop longue et\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/02\\\/makefile-generique\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\"},\"datePublished\":\"2008-02-24T16:22:45+02:00\",\"dateModified\":\"2008-03-15T10:35:19+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#website\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/\",\"name\":\"Autour de Linux\",\"description\":\"Ubuntu, linux, C++, audio, python, ...\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"C++ \u2013 Makefile g\u00e9n\u00e9rique | Autour de Linux","description":"Voil\u00e0, vous avez pris un peu d'assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et","canonical_url":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#article","name":"C++ \u2013 Makefile g\u00e9n\u00e9rique | Autour de Linux","headline":"C++ &#8211; Makefile g\u00e9n\u00e9rique","author":{"@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author"},"publisher":{"@id":"https:\/\/www.leunen.com\/linux\/#organization"},"datePublished":"2008-02-24T16:22:45+02:00","dateModified":"2008-03-15T10:35:19+02:00","inLanguage":"fr-FR","mainEntityOfPage":{"@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#webpage"},"isPartOf":{"@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#webpage"},"articleSection":"C++"},{"@type":"BreadcrumbList","@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux#listItem","position":1,"name":"Home","item":"https:\/\/www.leunen.com\/linux","nextItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/category\/c\/#listItem","name":"C++"}},{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/category\/c\/#listItem","position":2,"name":"C++","item":"https:\/\/www.leunen.com\/linux\/category\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#listItem","name":"C++ &#8211; Makefile g\u00e9n\u00e9rique"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#listItem","position":3,"name":"C++ &#8211; Makefile g\u00e9n\u00e9rique","previousItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/category\/c\/#listItem","name":"C++"}}]},{"@type":"Organization","@id":"https:\/\/www.leunen.com\/linux\/#organization","name":"Autour de Linux","description":"Ubuntu, linux, C++, audio, python, ...","url":"https:\/\/www.leunen.com\/linux\/"},{"@type":"Person","@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author","url":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/","name":"Michel Leunen","image":{"@type":"ImageObject","@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/41e08d5087493eaa9ce4ebd4e0a55ffb?s=96&d=mm&r=g","width":96,"height":96,"caption":"Michel Leunen"}},{"@type":"WebPage","@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#webpage","url":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/","name":"C++ \u2013 Makefile g\u00e9n\u00e9rique | Autour de Linux","description":"Voil\u00e0, vous avez pris un peu d'assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.leunen.com\/linux\/#website"},"breadcrumb":{"@id":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/#breadcrumblist"},"author":{"@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author"},"creator":{"@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author"},"datePublished":"2008-02-24T16:22:45+02:00","dateModified":"2008-03-15T10:35:19+02:00"},{"@type":"WebSite","@id":"https:\/\/www.leunen.com\/linux\/#website","url":"https:\/\/www.leunen.com\/linux\/","name":"Autour de Linux","description":"Ubuntu, linux, C++, audio, python, ...","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.leunen.com\/linux\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"Autour de Linux | Ubuntu, linux, C++, audio, python, ...","og:type":"article","og:title":"C++ \u2013 Makefile g\u00e9n\u00e9rique | Autour de Linux","og:description":"Voil\u00e0, vous avez pris un peu d'assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et","og:url":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/","article:published_time":"2008-02-24T15:22:45+00:00","article:modified_time":"2008-03-15T09:35:19+00:00","twitter:card":"summary","twitter:title":"C++ \u2013 Makefile g\u00e9n\u00e9rique | Autour de Linux","twitter:description":"Voil\u00e0, vous avez pris un peu d'assurance, vous commencez \u00e0 diviser votre code en plusieurs unit\u00e9s (ce qui est une bonne pratique) et vous avez plusieurs fichiers \u00e0 compiler et \u00e0 lier ensemble pour en faire une application. Inconv\u00e9nient, la ligne de commande \u00e0 taper au clavier dans une console devient beaucoup trop longue et"},"aioseo_meta_data":{"post_id":"21","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 07:32:55","updated":"2025-06-23 20:39:03","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.leunen.com\/linux\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.leunen.com\/linux\/category\/c\/\" title=\"C++\">C++<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tC++ \u2013 Makefile g\u00e9n\u00e9rique\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.leunen.com\/linux"},{"label":"C++","link":"https:\/\/www.leunen.com\/linux\/category\/c\/"},{"label":"C++ &#8211; Makefile g\u00e9n\u00e9rique","link":"https:\/\/www.leunen.com\/linux\/2008\/02\/makefile-generique\/"}],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/21"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=21"}],"version-history":[{"count":0,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/21\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=21"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=21"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}