Au delà de make

Que désirer de plus ?

Ce qui sort du "domaine de confort" de make :

  • Compiler dans un répertoire indépendant des sources (out of source build). Sur une machine d'un centre de calcul, en général, un utilisateur a un espace sauvegardé de petite taille, où placer les fichiers sources. Il faut donc placer les produits de la compilation dans un autre espace. Même sur une machine personnelle, intérêt de distinguer une arborescence à sauvegarder et donc de placer les produits de compilation ailleurs.

  • Basculer facilement entre des options de débogage et des options de rapidité. Autrement qu'en commentant et décommentant des lignes d'options dans le makefile.

  • Changer de machine ou de compilateur. Autrement qu'en commentant et décommentant des lignes de makefile. Noter que le changement de compilateur implique en général le changement des options et que le changement de machine, même à compilateur identique, peut impliquer le changement des chemins des bibliothèques utilisées.

  • Plusieurs exécutables ou bibliothèques à partir de plusieurs fichiers sources chacun, dans un projet. Pénible parce qu'il faut dans le makefile créer une variable pour l'ensemble de sources de chaque exécutable ou bibliothèque, une variable correspondante pour l'ensemble des objets de chaque exécutable ou bibliothèque, et des variables pour l'ensemble des sources et des objets, tous exécutables et bibliothèques confondus.

  • Partage du code, avec un système de gestion de version. Souhaitable de partager un système de compilation général : indépendant du compilateur et de la machine. Mais la présence d'un tel makefile général dans les sources gêne la présence d'un makefile opérationnel sur la machine de travail.

Configuration

  • Une idée puissante : distinguer une étape préalable à la compilation, la configuration. Le développeur écrit et distribue des "fichiers de configuration" contenant des informations intrinsèques au programme : liste des fichiers sources, bibliothèques à trouver (nommées sans donner de chemin), cibles à créer, etc. L'utilisateur choisit au moment de la configuration les informations de circonstance : compilateur, chemin des bibliothèques, etc.

  • Cette idée de distinguer la configuration est mise en oeuvre par plusieurs outils qui dépassent ou englobent make.

Un petit tour d'horizon des outils au delà de make

Outils de compilation (build tools) "importants" qui annoncent pouvoir gérer du code Fortran :

  • GNU Autotools : autoconf, automake et libtool. Depuis ~ 1991. L'ancêtre, mais toujours développé. Non essayé.
  • Scons. Depuis 2000. Interface en Python. Échec personnel en Fortran, pour des projets non triviaux (essayé en 2018).

  • CMake. Depuis 2000. Probablement le plus populaire aujourd'hui. Multi-plateformes.

  • Waf. Depuis 2010. En Python. Échec personnel. Documentation insuffisante.
  • Meson. Depuis 2013.