SCons : construction de logiciels, automatisation de la compilation

Fiche PLUME
  • Création ou MAJ importante : 21/09/2013
  • Correction mineure : 21/09/2013
  • Auteur : Sylvain Desroziers - Département Mathématiques Appliquées (IFP Energies Nouvelles)
  • Contributions importantes :

    Jean-Marc Müller, auteur initial de la fiche.


  • Responsable thématique : fenix-contact fenix-contact (CNRS)
  • Relecteur 1 : Thierry Dumont
  • Relecteur 2 : Romaric David
Mots clés
Description
Fonctionnalités générales

SCons est un outil de construction de logiciel open source visant à être une alternative solide aux utilitaires historiques make et autoconf. La simplicité d'utilisation, la robustesse de la construction et l'évolutivité sont autant d'atouts de SCons.

Contrairement à ses concurrents tels Autotools et CMake, SCons ne nécessite pas l'apprentissage d'un langage spécifique (parfois limité). SCons est écrit en Python et l'utilise comme langage de base pour la configuration. Ainsi, il bénéficie d'une syntaxe puissante, simple et bien documentée permettant de créer un système sur mesure.

Les principales caractéristiques de SCons sont les suivantes :

  • syntaxe portable : langage python, facile d'apprentissage et puissant ;
  • support d'un grand nombre de langages : C, C++, Java, Fortran, D, LaTex... Possibilité de définir des règles de compilation et analyseurs de dépendances spécifiques ;
  • construction multi-plateforme : Linux, Mac OS X, Windows. Possibilité de générer des solutions VisualStudio. Le seul pré-requis est de bénéficier d'un interpréteur Python. Manipulation des fichiers indépendante de la plateforme ;
  • configuration automatisée : recherche automatique des fichiers de dépendances, des librairies et des fonctions appelées à la manière autoconf ;
  • détection pour la recompilation : basée sur la signature MD5 (par défaut) des fichiers. Possibilité de se baser sur la date de modification (timestamp) « à la make » ;
  • compilation parallèle : représentation globale du graphe de dépendance (SQLite) permettant une parallélisation performante (contrairement à make) ;
  • utilisation de cache : mise en cache des informations collectées lors du premier appel et réutilisation lors des appels suivants « à la ccache » ;
  • séparation des répertoires sources et de compilation : possibilité de compilation hors de l'arborescence des fichiers sources ;
  • installeur : possibilité d'installer les fichiers résultats de compilation, entre autres, dans des répertoires particuliers ;
  • verbosité du graphe de dépendance : possibilité d'affichage de l'arbre de dépendance des fichiers du logiciel ;
  • verbosité d'exécution : possibilité d'affichage détaillé de l'exécution de la compilation ;
  • environnements de construction : possibilité de définition d'environnement de construction ou d'exécution spécifique à chaque programme. Permet ainsi de produire des programmes compilés avec des options différentes en une unique utilisation ;
  • gestion de compilation : possibilité de contrôler finement la construction en ligne de commande ;
  • construction à partir de dépôts : possibilité d'utiliser les sources issus de systèmes de révision tels CVS et SVN.
Interopérabilité
  • compilation de code C, C++, Java, Fortran, Yacc, Lex, Qt, SWIG ;
  • compilation de documents Tex et LaTex ;
  • disponible sur toute plate-forme disposant d'un interpréteur Python ;
  • intégré sous forme de plug-ins à différents environnements de développement (Eclipse, Visual Studio .NET).
Contexte d'utilisation dans mon laboratoire/service

SCons est utilisé quotidiennement au LSIIT ainsi qu'à l'IRCAD à Strasbourg pour la compilation de codes C/C++ dans le cadre de développements logiciels pour la recherche.
A titre personnel, le choix de SCons a été motivé par la simplicité de prise en main (bonne documentation) et d'utilisation (syntaxe Python) ainsi que par la possibilité d'enrichir sans trop d'efforts les fonctions fournies de base (possibilité de définir ses propres fonctions de traitement des fichiers).

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré
  • Toutes les distribution Linux
  • Plug-in Eclipse
  • Visual Studio .NET
Plates-formes

Linux, IBM AIX, *BSD, HP/UX, IRIX, Sun Solaris, Microsoft Windows, Mac OS X

Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement

Association : SCons fundation

Références d'utilisateurs institutionnels
Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur
Contributions