ENVOL - Outils de construction

Dimension: px
Commencer à balayer dès la page:

Download "ENVOL - Outils de construction"

Transcription

1 ENVOL - Outils de construction formation pour le developpement et la ValOrisation des Logiciels en environnement de recherche Organisation par le projet PLUME et les réseaux Calcul et DevLog Johan Moreau IRCAD 27 septembre 2010 Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

2 Le document : Cette présentation a été faite avec des outils opensource et libre dans le but de présenter des outils de construction d applications eux-aussi opensource. N hésitez pas à m envoyer vos remarques ou corrections sur johan.moreau sur gmail.com Ce document est distribué sous licence Creative Commons Attribution-ShareAlike 2.0 La session : Des séquences de slides emmelées avec des exemples de codes Des questions (et je l espère des réponses) à tout moment Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

3 Sommaire Sommaire Le but de cette présentation est de découvrir les outils de construction d applications dans le contexte d un laboratoire de recherche. 1. La construction d application 2. Les GNU Autotools 3. CMake 4. SCons 5. QMake, MSBuild, Ant, Maven,... Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

4 La construction d application 1. La construction d application Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

5 La construction d application Sommaire La construction d application Quelques rappels et remarques Les Makefile Les limitations et les solutions Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

6 La construction d application Quelques rappels... Les processus de construction simple On parle ici des logiciels permettant d automatiser (ordonnancer et piloter) l ensemble des actions (préprocesseur, compilation, éditions des liens, etc.) contribuant, à partir de données sources, à la production d un (ensemble) logiciel. Les termes anglais sont Software Build 1 ou Build automation http ://en.wikipedia.org/wiki/software build 2. http ://en.wikipedia.org/wiki/build automation Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

7 La construction d application Quelques rappels... Préprocesseur 3 Il s agit d une étape permettant des transformations sur un code source. Dans le monde C/C++, la commande du préprocesseur la plus répandue est include qui a pour but de recopier le contenu du fichier indiqué en paramêtre. (A noter la différence avec les package en java, import en Python et co) On peut aussi utiliser le préprocesseur pour faire des macros via define en C/C++ par exemple, de compilation conditionnelle, de la meta-programmation, etc... A noter que les conventions de codage demande souvent de limiter l usage du préprocesseur (retours d erreurs du compilateur) 3. http ://fr.wikipedia.org/wiki/pr%c3%a9processeur Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

8 La construction d application Quelques rappels... Compilation 5 Il s agit d une étape traduisant un code d un langage vers du code en langage machine (réel ou virtuel) Le langage machine est soit directement interprété par la machine soit interprété par une machine virtuelle 4. Dans ce dernier cas on peut citer Java ou DotNet. Les phases (traditionelles) : analyses lexicale, syntaxique puis sémantique, génération du code intermédiaire puis optimisation, génération du code objet 4. Le terme ici désigne un programme informatique interprétant ce code 5. http ://fr.wikipedia.org/wiki/compilateur Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

9 La construction d application Quelques rappels... Edition des liens 6 L édition des liens est un processus qui permet de créer des fichiers exécutables ou des bibliothèques dynamiques ou statiques, à partir de fichiers objets. 6. http ://en.wikipedia.org/wiki/linker %28computing%29 Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

10 La construction d application Quelques rappels... Un peu de compilation donc... Exemple en C sous UNIX Il faut déjà organiser un peu ses fichiers, par exemple Pour C/C++, spération des déclarations et implémentations Pour Java, regroupement par package... Ensuite organiser son code : #ifdef DEBUG pour C par exemple (à activer sur la ligne de commande : gcc -DDEBUG=1 fichier.c) Pour Java, regroupement par package... cc : Supprime les commentaires, effectue les inclusions et les macros,... cc1 : Converti le code C en assembleur as : Assemblage des fichiers assembleurs, génère les fichiers objets ld : Détermine les adresses mémoires des symboles et lie les fichiers objets entre eux Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

11 La construction d application Quelques rappels... La construction dans le monde réel Cette suite semble fixe et standard et donc totalement automatisable! Mais en réalité : Plusieurs langages avec chacun ses spécificités Des variantes dans les langages (gtk vs Qt par exemple) Problèmes du multiplateforme/architecture/distribution Grand nombre de fichiers et de cibles Il faut des outils pour assister le développeur dans cette phase. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

12 La construction d application Quelques rappels... La construction d applications C/C++ Cette présentation n illustrera que les principes les plus courants de la construction d applications C/C++ On ne parlera que très peu des systèmes embarqués dans les IDE On laissera les problèmes liés aux compilateurs de côtés On ne parlera que très peu des outils/besoins post-compilation (test unitaires, packaging, etc...) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

13 La construction d application Quelques rappels... A long time ago, in a galaxy far far away... 9 Jusqu à la fin des années 70, les programmes étaient petits. En 1977, le Dr Stuart I Feldman (Bell Labs) invente l outil Make L outil rencontre un succès immédiat. En 1997, Peter Miller ecrit l article : Recursive Make Considered Harmful 7. Depuis de nombreux outils essayent d améliorer de processus http ://aegis.sourceforge.net/auug97.pdf 8. http ://en.wikipedia.org/wiki/list of build automation software 9. http ://en.wikipedia.org/wiki/star Wars opening crawl Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

14 La construction d application La syntaxe du Makefile Les Makefile Le fichier Makefile est composé de plusieurs règles de la forme : cible : dépendances <TAB> commandes cible : dépendances <TAB> commandes Chaque commande est précédée d une tabulation : Makefile prog : main. o f u n c t i o n s. o gcc o prog main. o f u n c t i o n s. o main. o : main. c f u n c t i o n s. h gcc c main. c f u n c t i o n s. o : f u n c t i o n s. c f u n c t i o n s. h gcc c f u n c t i o n s. c Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

15 La construction d application Les Makefile Les évaluations de règles Lors de l utilisation de la commande make cible Evaluation de la règle dont la cible est passée en argument à make Evaluation de la première règle rencontrée (s il n y a pas d argument) Les dépendances sont analysées Si une dépendance n est pas à jour on tente de la résoudre Si cette dépendance est cible d une autre règle du Makefile alors cette règle est à son tour évaluée Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

16 La construction d application Les Makefile Les cibles classiques all Génération de toutes les cibles.phony Les dépendances de cette cible sont toujours regénérées clean Suppression des fichiers intermédiaires Mproper / distclean clean + suppression des fichiers cibles Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

17 La construction d application Les Makefile Les variables Déclaration de variables via NOM=VALEUR. Les variables traditionnelles : CFLAGS : options du compilatuer C (CXXFLAGS pour C++) LDFLAGS : options de l éditeur de liens... Les variables internes : $@ : la cible $< : la 1ère dépendance $ˆ : la liste des dépendances $* : le nom de la cible sans suffixe Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

18 La construction d application Les Makefile Et plus encore... Les conditionnelles : ifeq... else... endif La recherche de dépendances : Utilisation de la variable VPATH/vpath (VPATH = src :../headers) Les appels imbriqués : cd $(SRC DIR) && $(MAKE) $@ Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

19 La construction d application Quels reproches au Make ancestral? Les limitations et les solutions Pas vraiment portable/multiplateforme : basé sur des scripts shell et des propriétés du système de fichiers. De plus les évolutions des descandants (GNU Make,...) ont des implémentations particulières pour les fonctions manquantes (if-then-else par exemple). Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

20 La construction d application Les limitations et les solutions Quels reproches au Make ancestral? Pas vraiment portable/multiplateforme : basé sur des scripts shell et des propriétés du système de fichiers. De plus les évolutions des descandants (GNU Make,...) ont des implémentations particulières pour les fonctions manquantes (if-then-else par exemple). Difficulté à monter en charge : L évolution du code qui est nécessaire dans les gros projets s articule souvent autour de changement d arborescence ou de renommage de partie de code. Ceci entraine de nombreux changements manuels dans les Makefile. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

21 La construction d application Les limitations et les solutions Quels reproches au Make ancestral? Pas vraiment portable/multiplateforme : basé sur des scripts shell et des propriétés du système de fichiers. De plus les évolutions des descandants (GNU Make,...) ont des implémentations particulières pour les fonctions manquantes (if-then-else par exemple). Difficulté à monter en charge : L évolution du code qui est nécessaire dans les gros projets s articule souvent autour de changement d arborescence ou de renommage de partie de code. Ceci entraine de nombreux changements manuels dans les Makefile. Le langage du Makefile ajoute une complexité qui n a pas de raison d être. De plus il est relativement limité. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

22 La construction d application Les limitations et les solutions Quels reproches au Make ancestral? Pas vraiment portable/multiplateforme : basé sur des scripts shell et des propriétés du système de fichiers. De plus les évolutions des descandants (GNU Make,...) ont des implémentations particulières pour les fonctions manquantes (if-then-else par exemple). Difficulté à monter en charge : L évolution du code qui est nécessaire dans les gros projets s articule souvent autour de changement d arborescence ou de renommage de partie de code. Ceci entraine de nombreux changements manuels dans les Makefile. Le langage du Makefile ajoute une complexité qui n a pas de raison d être. De plus il est relativement limité. Les vérifications d évolutions de code sont superficielles. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

23 La construction d application Les limitations et les solutions Quels reproches au Make ancestral? Pas vraiment portable/multiplateforme : basé sur des scripts shell et des propriétés du système de fichiers. De plus les évolutions des descandants (GNU Make,...) ont des implémentations particulières pour les fonctions manquantes (if-then-else par exemple). Difficulté à monter en charge : L évolution du code qui est nécessaire dans les gros projets s articule souvent autour de changement d arborescence ou de renommage de partie de code. Ceci entraine de nombreux changements manuels dans les Makefile. Le langage du Makefile ajoute une complexité qui n a pas de raison d être. De plus il est relativement limité. Les vérifications d évolutions de code sont superficielles. Il n y pas de système de détection implicite de dépendances Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

24 La construction d application Ce qui a changé aussi... Les limitations et les solutions Précédement : Compiler votre code Faire la liaison avec les librairies (statiques/dynamiques) Distribuer sous forme de sources ou de binaires Maintenant, en plus : Exécuter les tests unitaires (voir fonctionnels) Faire un Installeur (msi, deb, rpm, installshield,...) Gérer les problématiques d internationalisation Générer la documentation développeur et utilisateur, les métriques,... A ceci s ajoute une tendance depuis 2000 : l intégration continue Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

25 La construction d application Les limitations et les solutions La notion d intégration continue 10 L idée : vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression du logiciel (donc l éxécutable, mais aussi la documentation, les métriques,...) Ceci implique donc une construction rapide flexible standardisée (un minimum d outils) identique pour toutes les cibles (OS, architecture,...) A partir de là, nous pouvons imaginer la production de livrables, de versions journalières( nightly build ), des déploiements automatiques, la génération automatique de l historique (release notes), etc http ://fr.wikipedia.org/wiki/int%c3%a9gration continue Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

26 La construction d application Les limitations et les solutions Evolution forte au milieu des années 90 Apparition des méthodes agiles Développement du marché Web Augmentation des langages et plateformes Croissance de l opensource L ensemble de ces facteurs pousse à avoir un système optimum pour la construction d application. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

27 La construction d application Les limitations et les solutions Vraiment un problème nouveau? Début des années 90 : imake pour XFree86 Cygnus et les gcc configure script pour les outils GNU autoconf C est cette dernière initiative qui fût la bonne. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

28 La construction d application Les limitations et les solutions La réponse du monde libre Création d autoconf en 1991 par David J. MacKenzie : apparition du script configure et des fichiers Makefile.in Utilisation de m4 et adoption des conventions issues de GNU Puis passage au configure.in Enfin, First CVS commit 11 Le choix qui a été fait ici a été de s appuyer sur les fonctionnalités présentes sur le système en les testant (la partie configure), d utiliser des outils de construction traditionnels (make,...) et d installer le produit de la compilation suivant des standards. De plus, il n y aucun lien avec les environnements de travail des développeurs (IDE). 11. http :// Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

29 La construction d application Les limitations et les solutions Les autres réponses qui ont suivies Ant, CMake, Jam/BJam, Maven, MSBuild, Qmake, Scons, Sconspiracy, Waf, Attention au syndrome du NIH : Not Invented Here http ://en.wikipedia.org/wiki/not Invented Here Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

30 La construction d application Les limitations et les solutions Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

31 GNU Autotools 2. GNU Autotools Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

32 GNU Autotools Sommaire GNU Autotools Les bases de GNU Autotools GNU Autotools dans le détail La gestion des bilbiothèques Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

33 GNU Autotools Les bases de GNU Autotools Les références Les sources d informations qui ont été utilisées pour cette partie : http :// http ://en.wikipedia.org/ http ://sourceware.org/autobook/ http :// adl/autotools.html http :// dax/polys/configure/ http ://fsmsh.com/2754 Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

34 GNU Autotools Les bases de GNU Autotools GNU Autotools Licence GPL, créé en 1992 Ecrit en shell + m4 Combinaison d outils Génération automatique de makefile Makefiles génériques, paramétrables Configurés automatiquement selon la plateforme Bonne portabilité des développements Construction simple et transparente pour l utilisateur :./configure,make,make install Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

35 GNU Autotools Les bases de GNU Autotools GNU Autotools, un ensemble d outils Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

36 GNU Autotools On peut simplifier un peu... Les bases de GNU Autotools On peut simplifier les 1ères étapes : autoreconf La séquence serait donc : Création du configure.ac Création des Makefile.am Lancement de autoreconf install Lancement de configure Lancement de make Lnacement de make install Bon allez, on se lance... Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

37 Notre petit Hello World GNU Autotools Les bases de GNU Autotools src/ main.c #i n c l u d e <s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { p r i n t f ( H e l l o World \n ) ; return 0 ; } Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

38 GNU Autotools Les bases de GNU Autotools Les 3 fichiers à éditer configure.ac AC_INIT([amhello], [1.0], [bug-report@address]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Makefile.am SUBDIRS = src src/ Makefile.am bin_programs = hello hello_sources = main.c Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

39 GNU Autotools GNU Autotools dans le détail Notre configure.ac configure.ac AC_INIT([amhello], [1.0], AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Initialisation Autoconf (nom, de support,...) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

40 GNU Autotools GNU Autotools dans le détail Notre configure.ac configure.ac AC_INIT([amhello], [1.0], AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Initialisation Autoconf (nom, de support,...) Initialisation Automake (remonte les erreurs,...) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

41 GNU Autotools GNU Autotools dans le détail Notre configure.ac configure.ac AC_INIT([amhello], [1.0], AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Initialisation Autoconf (nom, de support,...) Initialisation Automake (remonte les erreurs,...) Utilisation du compilateur C Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

42 GNU Autotools GNU Autotools dans le détail Notre configure.ac configure.ac AC_INIT([amhello], [1.0], AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Initialisation Autoconf (nom, de support,...) Initialisation Automake (remonte les erreurs,...) Utilisation du compilateur C Déclare config.h pour les entêtes Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

43 GNU Autotools GNU Autotools dans le détail Notre configure.ac configure.ac AC_INIT([amhello], [1.0], AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Initialisation Autoconf (nom, de support,...) Initialisation Automake (remonte les erreurs,...) Utilisation du compilateur C Déclare config.h pour les entêtes Déclare Makefile et src/ Makefile Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

44 GNU Autotools GNU Autotools dans le détail Notre configure.ac configure.ac AC_INIT([amhello], [1.0], AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Initialisation Autoconf (nom, de support,...) Initialisation Automake (remonte les erreurs,...) Utilisation du compilateur C Déclare config.h pour les entêtes Déclare Makefile et src/ Makefile Génère les fichiers spécifiés Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

45 GNU Autotools GNU Autotools dans le détail configure.ac en version plus complète configure.ac # Prelude. AC_INIT([amhello], [1.0], [bug-report@address]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) # Vérifications pour les programmes AC_PROG_CC # Vérifications pour les bibliothèques # Vérifications pour les entêtes # Vérifications pour les typedefs, les structures, les options de compilateurs # Génération de fichiers AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile src/makefile]) AC_OUTPUT Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

46 GNU Autotools GNU Autotools dans le détail Exemples de vérifications (et affectations) de programmes AC_PROG_CC, AC_PROG_CXX, AC_PROG_F77,... Vérifications pour les compilateurs Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

47 GNU Autotools GNU Autotools dans le détail Exemples de vérifications (et affectations) de programmes AC_PROG_CC, AC_PROG_CXX, AC_PROG_F77,... Vérifications pour les compilateurs AC_PROG_SED, AC_PROG_YACC, AC_PROG_LEX,... Vérifications pour les utilitaires Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

48 GNU Autotools GNU Autotools dans le détail Exemples de vérifications (et affectations) de programmes AC_PROG_CC, AC_PROG_CXX, AC_PROG_F77,... Vérifications pour les compilateurs AC_PROG_SED, AC_PROG_YACC, AC_PROG_LEX,... Vérifications pour les utilitaires AC_CHECK_PROGS(VAR, PROGS, [VAL-IF-NOT-FOUND]) VAR est positionné sur le 1er PROGS trouvé, si rien n est trouvé alors VAL-IF-NOT-FOUND. AC_CHECK_PROGS([TAR], [tar gtar], [:]) if test "$TAR" = :; then AC_MSG_ERROR([Ce paquet a besoin de tar.]) fi Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

49 GNU Autotools Les macros utiles dans autoconf GNU Autotools dans le détail AC_MSG_ERROR(ERROR-DESCRIPTION, [EXIT-STATUS]) Affiche ERROR-DESCRIPTION (config.log) et arrête configure. AC_MSG_WARN(ERROR-DESCRIPTION) Pareil, mais n arrête pas Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

50 GNU Autotools Les macros utiles dans autoconf GNU Autotools dans le détail AC_MSG_ERROR(ERROR-DESCRIPTION, [EXIT-STATUS]) Affiche ERROR-DESCRIPTION (config.log) et arrête configure. AC_MSG_WARN(ERROR-DESCRIPTION) Pareil, mais n arrête pas AC_DEFINE(VARIABLE, VALUE, DESCRIPTION) Ajoute les informations dans config.h. /* DESCRIPTION */ #define VARIABLE VALUE Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

51 GNU Autotools Les macros utiles dans autoconf GNU Autotools dans le détail AC_MSG_ERROR(ERROR-DESCRIPTION, [EXIT-STATUS]) Affiche ERROR-DESCRIPTION (config.log) et arrête configure. AC_MSG_WARN(ERROR-DESCRIPTION) Pareil, mais n arrête pas AC_DEFINE(VARIABLE, VALUE, DESCRIPTION) Ajoute les informations dans config.h. /* DESCRIPTION */ #define VARIABLE VALUE AC_SUBST(VARIABLE, [VALUE]) Fixe $(VARIABLE) comme VALUE dans Makefile. AC_SUBST([FOO], [foo]) FOO=foo AC_SUBST([FOO]) Les 3 écritures sont équivalentes AC_SUBST([FOO]) FOO=foo Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

52 GNU Autotools Vérification pour les bibliothèques GNU Autotools dans le détail AC_CHECK_LIB(LIBRARY, FUNCT, [ACT-IF-FOUND], [ACT-IF-NOT]) Vérifie si la LIBRARY existe et si elle contient FUNCT. Si oui, éxecute ACT-IF-FOUND sinon ACT-IF-NOT. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

53 GNU Autotools Vérification pour les bibliothèques GNU Autotools dans le détail AC_CHECK_LIB(LIBRARY, FUNCT, [ACT-IF-FOUND], [ACT-IF-NOT]) Vérifie si la LIBRARY existe et si elle contient FUNCT. Si oui, éxecute ACT-IF-FOUND sinon ACT-IF-NOT. AC_CHECK_LIB([efence], [malloc], [EFENCELIB=-lefence]) AC_SUBST([EFENCELIB]) $(EFENCELIB) pourra être utilisé plus tard Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

54 GNU Autotools Vérification pour les entêtes GNU Autotools dans le détail AC_CHECK_HEADERS(HEADERS...) Vérifie la présence de HEADERS et positionne #define HAVE_HEADER_H pour chacun. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

55 GNU Autotools Vérification pour les entêtes GNU Autotools dans le détail AC_CHECK_HEADERS(HEADERS...) Vérifie la présence de HEADERS et positionne #define HAVE_HEADER_H pour chacun. AC_CHECK_HEADERS([sys/param.h unistd.h]) AC_CHECK_HEADERS([wchar.h]) #define HAVE_SYS_PARAM_H, HAVE_UNISTD_H, and HAVE_WCHAR_H. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

56 GNU Autotools Vérification pour les entêtes GNU Autotools dans le détail AC_CHECK_HEADERS(HEADERS...) Vérifie la présence de HEADERS et positionne #define HAVE_HEADER_H pour chacun. AC_CHECK_HEADERS([sys/param.h unistd.h]) AC_CHECK_HEADERS([wchar.h]) #define HAVE_SYS_PARAM_H, HAVE_UNISTD_H, and HAVE_WCHAR_H. #i f HAVE UNISTD H # i n c l u d e <u n i s t d. h> #e n d i f Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

57 GNU Autotools Vérification pour les entêtes GNU Autotools dans le détail AC_CHECK_HEADERS(HEADERS...) Vérifie la présence de HEADERS et positionne #define HAVE_HEADER_H pour chacun. AC_CHECK_HEADERS([sys/param.h unistd.h]) AC_CHECK_HEADERS([wchar.h]) #define HAVE_SYS_PARAM_H, HAVE_UNISTD_H, and HAVE_WCHAR_H. #i f HAVE UNISTD H # i n c l u d e <u n i s t d. h> #e n d i f AC_CHECK_HEADER(HEADER, [ACT-IF-FOUND], [ACT-IF-NOT]) Utile pour vérifier uniquement les entêtes (sans les DEFINE) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

58 GNU Autotools GNU Autotools dans le détail Les Makefile.am Makefile.am SUBDIRS = src src/ Makefile.am bin_programs = hello hello_sources = main.c SUBDIRS pour les sous-répertoire à prendre en compte bin PROGRAMS éxécutable à générer (à séparer par des espaces) target SOURCES... Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

59 La déclaration des cibles GNU Autotools GNU Autotools dans le détail Makefile.am lieu_type = cibles... Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

60 GNU Autotools GNU Autotools dans le détail La déclaration des cibles Makefile.am lieu_type = cibles... les cibles seront construites commes ( TYPE ) _PROGRAMS _LIBRARIES _LTLIBRARIES _HEADERS _SCRIPTS _DATA Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

61 GNU Autotools GNU Autotools dans le détail La déclaration des cibles Makefile.am lieu_type = cibles... les cibles seront installées dans ( lieu ) bin_ $(bindir) lib_ $(libdir) les cibles seront construites commes ( TYPE ) _PROGRAMS _LIBRARIES _LTLIBRARIES _HEADERS _SCRIPTS _DATA Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

62 Les bibliothèques GNU Autotools La gestion des bibliothèques Ajouter AC_PROG_RANLIB dans configure.ac. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

63 Les bibliothèques GNU Autotools La gestion des bibliothèques Ajouter AC_PROG_RANLIB dans configure.ac. Makefile.am lib_libraries = libfoo.a libbar.a libfoo_a_sources = foo.c privfoo.h libbar_a_sources = bar.c privbar.h include_headers = foo.h bar.h Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

64 Les bibliothèques GNU Autotools La gestion des bibliothèques Ajouter AC_PROG_RANLIB dans configure.ac. Makefile.am lib_libraries = libfoo.a libbar.a libfoo_a_sources = foo.c privfoo.h libbar_a_sources = bar.c privbar.h include_headers = foo.h bar.h Ces bibliothèques seront installées dans $(libdir). Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

65 GNU Autotools La gestion des bibliothèques Les bibliothèques Ajouter AC_PROG_RANLIB dans configure.ac. Makefile.am lib_libraries = libfoo.a libbar.a libfoo_a_sources = foo.c privfoo.h libbar_a_sources = bar.c privbar.h include_headers = foo.h bar.h Ces bibliothèques seront installées dans $(libdir). Le nom des bilbiothèques doivent correspondre à lib*.a. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

66 GNU Autotools La gestion des bibliothèques Les bibliothèques Ajouter AC_PROG_RANLIB dans configure.ac. Makefile.am lib_libraries = libfoo.a libbar.a libfoo_a_sources = foo.c privfoo.h libbar_a_sources = bar.c privbar.h include_headers = foo.h bar.h Ces bibliothèques seront installées dans $(libdir). Le nom des bilbiothèques doivent correspondre à lib*.a. Les entêtes publiques seront installées dans $(includedir). Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

67 GNU Autotools La gestion des bibliothèques Les bibliothèques Ajouter AC_PROG_RANLIB dans configure.ac. Makefile.am lib_libraries = libfoo.a libbar.a libfoo_a_sources = foo.c privfoo.h libbar_a_sources = bar.c privbar.h include_headers = foo.h bar.h Ces bibliothèques seront installées dans $(libdir). Le nom des bilbiothèques doivent correspondre à lib*.a. Les entêtes publiques seront installées dans $(includedir). Les entêtes privées ne seront pas installées Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

68 GNU Autotools Conclusion Conclusion sur les GNU Autotools Les contres : Pour beaucoup Autotools est synonyme d Autohell 13 : de nombreuses options et documentations. La gestion des dépendances et des découvertes des fichiers est en partie manuelle si elle n est pas en arborescence traditionnelle. L utilisation de m4 est complexe. Sous Win32/Win64, seul Cygwin/MinGW est supporté. Les pours : De loin, l outils le plus complet et puissant. L utilisation des arborescences de distribution est parfaite. Et donc la distribution (packaging) quasi-automatique. La documentation est très complète. Ils sont utilisés par des milliers de projets. 13. http ://esr.ibiblio.org/?p=1877 Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

69 GNU Autotools Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

70 CMake 3. CMake Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

71 CMake Sommaire CMake Les bases de CMake La gestion des bibliothèques CMake dans le détail Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

72 CMake Les bases de CMake Les références Les sources d informations qui ont été utilisées pour cette partie : http :// http ://fr.wikipedia.org/wiki/cmake http :// http :// cmake.pdf Mastering CMake - Published by Kitware, Inc. - ISBN Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

73 CMake Les bases de CMake CMake Licence BSD Créé en 2000 Ecrit en C++, se compile avec make/g++ ou Visual C++ Syntaxe maison dans un fichier : CMakeLists.txt Outil binaire monolithique Multiplateforme (POSIX systems, Windows) Génération automatique de makefile en fonction de la plateforme Makefiles génériques, paramétrables Configurés automatiquement selon la plateforme Bonne portabilité des développements Génération des espaces de travail (Kdevelopp, XCode, MSVC,...) Petits extras : SWIG, Graphviz, CDash, CPack, CTest Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

74 CMake Les bases de CMake Les projets qui utilisent CMake ITK, VTK, VXL, ParaView, Slicer, gdcm KDE 14 Second Life clang, LLVM http ://lwn.net/articles/188693/ Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

75 CMake Les bases de CMake Mode opératoire Créer et paramétrer un fichier CMakeLists.txt dans chaque répertoire du projet. Utiliser la commande cmake Construction dans les sources du projet cmake. Construction hors des sources du projet cmake path vers sources du projet Génération des fichiers Makefile, ou.dsp, ou.sln,... Utilisables par les outils natifs L ensemble est mis en cache dans CMakeCache.txt (généré lors du 1er appel à cmake) : Configuration de la construction (variables et valeurs) En cas de problème : modification manuelle ou via ccmake Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

76 CMake Les bases de CMake Les 3 fichiers à éditer pour notre petit HelloWorld src/ main.c #i n c l u d e <s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { p r i n t f ( H e l l o World \n ) ; return 0 ; } CMakeLists.txt PROJECT(hello) SUBDIRS(src) src/ CMakeLists.txt ADD_EXECUTABLE(hello main.c) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

77 CMake Un exemple de bibliothèque : libfoo La gestion des bibliothèques src/ CMakeLists.txt INCLUDE_DIRECTORIES($CMAKE_SOURCE_DIR/foo) LINK_DIRECTORIES($CMAKE_BINARY_DIR/foo) ADD_EXECUTABLE(hello main.c) TARGET_LINK_LIBRARIES(hello foo) CMakeLists.txt PROJECT(hello) SUBDIRS(foo src) foo/ CMakeLists.txt ADD_LIBRARY(foo STA- TIC foo.c) foo/ CMakeLists.txt ADD_LIBRARY(foo SHA- RED foo.c) Librairie statique (.a/.lib) ou librairie dynamique (.so/.dll/.dylib) L ordre des répertoires est important. Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

78 CMake CMake dans le détail Les possibilités du CMakeLists.txt Langage de script avec une syntaxe simple Les commentaires avec : # Les commandes en : COMMAND(arg1 arg2...) Les listes en : A ;B ;C Les variables en $VAR Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

79 Les structures de contrôles CMake CMake dans le détail Conditionnelles IF(CONDITION) MESSAGE("Yes") ELSE(CONDITION) MESSAGE("No") ENDIF(CONDITION) Boucles FOREACH(c A B C) MESSAGE("$c: $$c") ENDFOREACH(c) Macros MACRO(MY_MACRO arg1 arg2) SET($arg1 "$$arg2") ENDMACRO(MY_MACRO) MY_MACRO(A B) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

80 Composition : Macro CMake CMake dans le détail Composition de commandes existantes via l utilisaiton de macros MACRO (CREATE_EXECUTABLE NAME SOURCES LIBRARIES) ADD_EXECUTABLE($NAME $SOURCES) TARGET_LINK_LIBRARIES($NAME $LIBRARIES) ENDMACRO(CREATE_EXECUTABLE) ADD_LIBRARY(foo main.c) CREATE_EXECUTABLE(hell main.c foo) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

81 Création de variables CMake CMake dans le détail Création de variables booléennes - Utilisation en ligne de commande OPTION(DEBUG "Programme en mode DEBUG" OFF) IF(DEBUG) SET_SOURCE_FILES_PROPERTIES(main.c COMPILE_FLAGS -DDEBUG) ENDIF(DEBUG) $ cmake -DDEBUG :BOOL=ON Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

82 CMake CMake dans le détail Quelques remarques sur cmake... Pensez à utiliser : cmake help pour l aide glolabe cmake help COMMAND pour une aide détaillée : cmake help IF SET(CMAKE VERBOSE MAKEFILE on) Il est possible de passer des paramètres sur la ligne de commande : par exemple -G pour sélectionner le système de construction cible par exemple -D pour mettre des variables en cache $ cmake../foo -G Visual Studio 10 -DFOOBAR :BOOL=1 Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

83 La GUI : NCurses CMake CMake dans le détail Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

84 La GUI : Windows CMake CMake dans le détail Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

85 Les modules CMake CMake dans le détail CMake propose des modules FIND LIBRARY afin de trouver les librairies externes utiles pour votre construction : Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

86 Les modules, suite CMake CMake dans le détail PROJECT( myproject ) FIND_PACKAGE ( PNG ) IF ( PNG_FOUND ) INCLUDE( $PNG_USE_FILE ) ENDIF( PNG_FOUND ) ADD_EXECUTABLE( myproject myproject.cxx ) TARGET_LINK_LIBRARIES ( myproject PNG) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

87 CMake CMake dans le détail Génération d un paquet Outil annexe : CPack, pour générer des paquets : Linux RPM, deb et gzip NSIS (pour Microsoft Windows) Mac OS X packages (dmg + pkg) Ajout de INCLUDE(CPack) dans le CMakeLists.txt de base. Puis : cmake. make package make package source Le paramêtrage se fait dans CPackSourceConfig.cmake Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

88 CMake Conclusion Conclusion sur CMake Les contres : Syntaxe propre Flexibilité restreinte (bien pensé quand même!) Comme les GNU Autotools, ce n est pas un système de construction : C est un générateur de fichier de configuration pour les systèmes de construction Les pours : Communauté croissante (et KDE!) Très intéressant dans le contexte scientifique (imagerie) Vrai multiplateforme / pas uniquement POSIX Les ajouts : CPack, CDash, CTest Les Modules (+250 dans la dernière version) GUI de configuration Autoconfiguration (librairie partagée, debug, etc...) Outil très stable Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

89 CMake Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

90 SCons 4. SCons Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

91 SCons Sommaire SCons Les bases de SCons La gestion des bibliothèques SCons dans le détail Exemple de spécialisation : SConspiracy Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

92 SCons Les bases de SCons Les références Les sources d informations qui ont été utilisées pour cette partie : http :// http ://fr.wikipedia.org/wiki/scons http :// Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

93 SCons Les bases de SCons SCons Licence MIT Créé en 2000 (suite au projet Cons en Perl) Ecrit en python Syntaxe python dans des fichiers SConstruct Outil interprété Multiplateforme (sur toutes les plateformes avec Python) Remplace make, nmake.exe, msbuild.exe, etc... Détection des outils de compilation, d édition des liens,... Génération des espaces de travail Microsoft Petits extras : SWIG, Graphviz, CDash, CPack, CTest Support pour C, C++, D, Java, Fortran, Yacc, Tex, Qt, SWIG,... Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

94 SCons Les bases de SCons Les projets qui utilisent SCons VMWare Google Chrome Doom3 Blender NumPy/SciPy Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

95 SCons Les bases de SCons Mode opératoire Créer et paramétrer un fichier SConstruct à la racine et des fichiers SConscript dans chaque répertoire du projet. Utiliser la commande scons scons L ensemble des informations intermédiaires est mis en cache dans le fichier.sconsign.dblite Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

96 SCons Les bases de SCons Les 3 fichiers à éditer pour notre petit HelloWorld src/ main.c #i n c l u d e <s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { p r i n t f ( H e l l o World \n ) ; return 0 ; } SConstruct SConscript( src/sconscript ) src/ SConscript Program( hello, [ main.c ]) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

97 SCons La gestion des bibliothèques Un exemple de bibliothèque : libfoo src/ SConscript Program( hello, [ main.c ], LIBS=[ foo ], LIBPATH=[../foo ], CPPPATH=[../foo ]) SConstruct SConscript ([ src/sconscript, foo/sconscript ]) L ordre des répertoires n est pas important. foo/ SConscript StaticLibrary( foo,[ foo.c ]) foo/ SConscript SharedLibrary( foo,[ foo.c ]) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

98 SCons SCons dans le détail Les possibilités du SConscript Pour faire simple, quasiment tout est possible! C est un fichier qui est interprété en Python. Il est par exemple possible de définir des environnements de construction : SConstruct opt = Environment(CCFLAGS = -O2 ) dbg = Environment(CCFLAGS = -g ) opt.program( foo, foo.c ) dbg.program( bar, bar.c ) Al éxécution scons -Q cc -o bar.o -c -g bar.c cc -o bar bar.o cc -o foo.o -c -O2 foo.c cc -o foo foo.o Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

99 SCons SCons dans le détail Afficher les variables ou copier l environnement SConstruct dict = Environment().Dictionary() keys = dict.keys() keys.sort() for key in keys: print "construction variable = %s, value = %s " % (key, dict[key]) SConstruct env = Environment(CC = gcc ) env.program( foo, foo.c ) env.clone(ccflags = -O2 ).Program( foo-opt, foo.c ) env.clone(ccflags = -g ).Program( foo-dbg, foo.c ) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

100 SCons SCons dans le détail La reconstruction Timestamp comme Makefiles SConstruct Decider( timestamp-newer ) Decider( make ) Decider( timestamp-match ) Checksum md5 (méthode par défaut) SConstruct Decider( MD5 ) Combinaison des deux SConstruct Decider( MD5-timestamp ) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

101 SCons SCons dans le détail Quelques remarques sur SCons Construction hors des sources SConstruct SConscript( src/sconscript, variant_dir= build ) Manipulation des listes SConstruct Program( program, Glob( *.c )) Déterminer la localisation d une librairie (et placer dans CPPPATH) SConstruct env = Environment() env[ CPPPATH ] = [ /lib/compat ] env.parseconfig("pkg-config x11 -cflags -libs") Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

102 SCons SCons dans le détail Quelques compléments sur SCons Nettoyage des sources après construction : scons -c VariantDir pour avoir un répertoire de sources propre Possibilité de faire des compilations distribuées Possibilité de mettre le cache sur un partage réseau... Très grande possibilité d extension Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

103 SCons SConspiracy Un exemple d extension : SConspiracy Yams++ SConspiracy (racy) Construction d application C++ Multiplateforme Orientée composant En environnement contrôlé Open source, Licence BSD http ://code.google.com/p/sconspiracy/ Compatibilité avec Yams++ (ancêtre du projet) Remplace make, cmake,... Python 2.6, SCons >=1.3 pour la dernière version Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

104 SCons SConspiracy Les Buts Utilises les avantages de SCons en essayant d ajouter : Ajout/Configuration de projets souple et simple Respecter au maximum la philosophie DRY (Don t Repeat Yourself) Détection automatique de ce qui doit être compilé Obtenir un workflow de construction optimum Permettre facilement l ajout ou l évolution de fonctionnalité (plugins) Gestion uniforme et souple des bibliothèques externes Création de packages binaires utilisables sous forme de bibliothèques externes Gestion de multiples projets indépendants ou à composants communs Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

105 SCons SConspiracy Base de développement et projets Un ou plusieurs répertoires contenant des projets Arborescence non structurée Noms de projets uniques, composé par [}a-za-z0-9{]+ Un projet ne peut pas se trouver dans le répertoire d un autre projet Répertoire structuré (Sources + ressources + configuration- Nom du répertoire nom du projet Structure du répertoire prj/bin/build.options prj/include prj/src prj/rc build.options (équivalent à un SConstruct ou CMakeLists.txt) variable nécessaire : TYPE (shared, static, exec, bundle,...) variables optionnelles : VERSION, LIB, USE,... Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

106 SCons SConspiracy Exemple de build.options Exemple de fichier build.options : build.options TYPE = shared VERSION = 0-4 LIB = [ core, utils ] USE = [ boost, vtk ] Tout ceci est du code Python, comme pour SConstruct Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

107 SCons SConspiracy Exemple d utilisation de SConspiracy build.options - hello TYPE = exec LIB = [ sconspirator 0.1 ] build.options - hello hello/bin/build.options hello/src/program.cpp build.options - sconspirator TYPE = shared VERSION = 0.1 build.options - sconspirator sconspirator/bin/build.options sconspirator/include/sconspirator.hpp sconspirator/src/sconspirator.cpp Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

108 Application + libs SCons SConspiracy C Obj instance de A::Indenter Instance de B::Obj D Obj instance de A::Indenter Instance de B::Obj B Obj instance de A::Indenter Instance de A::Obj A Indenter Obj E Obj instance de A::Indenter Instance de D::Obj Instance de F::Obj F Obj instance de A::Indenter Instance de B::Obj App Instance de E::Obj Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

109 Application + libs + libext SCons SConspiracy A Indenter Obj B Obj instance de A::Indenter Instance de A::Obj Boost G Obj Shared_ptr sur une instance de A::Indenter Shared_ptr sur une Instance de B::Obj AppBoost Instance de E::Obj Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

110 Conclusion sur SCons SCons Conclusion Les contres : Si mal configuré, il peut-être lent sur des gros projets Nécessaire de le spécialiser à partir d une certaine taille de projet. Générateur d espace de travail pas aussi performant que CMake La recherche de librairie n a pas les ajouts de CMake Avoir Python d installé Les pours : Vraiment multiplateforme et extensible avec un langage connu Il ne produit pas des fichiers pour construire, il construit Permet d avoir des processus de construction maison, ce qui est nécessaire à partir d une certaine taille de projet/équipe Autoconfiguration (librairie partagée, warnings, etc...) Compléments extrêmement intéressants (scons-addons, SConspiracy, sbf, swtoolkit, scons-plusplus,...) Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

111 SCons Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

112 Les autres 5. Les autres Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

113 Les autres Sommaire Les autres Ant Maven Qmake Et de nombreux autres Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

114 Les autres Ant Ant : Another Neat Tool 16 Ant 15 est sous licence Apache et a été créé en Le projet est hébergé par la fondation Apache et est écrit en Java. Il permet de faire l appel aux compilateurs, aux générateurs de documentation (Javadoc), aux générateurs de rapports, aux vérificateurs de style (checkstyle),... Il peut être utilisé avec C/C++ via des contributions au projet Il est devenu omnipresent dans le monde Java. 15. http :// 16. http ://fr.wikipedia.org/wiki/apache Ant Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

115 Les autres Maven Maven 17 Maven est sous licence Apache et a été créé en En gros, il reprend tout ce que fait Ant, mais essaye d en simplifier la configuration pour les gros projets. Il essaye de standardiser les projets. Il apporte une très bonne gestion des dépendances. Il a une orientation réseau (si les sources ne sont pas là, il va les chercher) Il n y a plus de support pour C/C++ mais il en existe pour.net La version 3 devrait support Ruby et Groovy 17. http ://fr.wikipedia.org/wiki/apache Maven Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

116 Les autres qmake qmake 19 Outil de construction fournit avec Qt A l origine TMake (un script Perl) Même architecture que TMake, difficile à maintenir Semble se faire petit à petit remplacer par CMake http ://labs.qt.nokia.com/2009/10/14/to-make-or-not-to-make-qmake-andbeyond-redux/ 19. http ://doc.trolltech.com/4.6/qmake-manual.html Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

117 Les autres Et de nombreux autres Waf Il s agit d un fork de SCons. Waf 20 est portable, léger, n a que Python comme dépendance. Il propose un vrai langage (Python) pour la configuration. Il support les cibles traditionnelles (buid, clean, install,...) Il détermine les dépendances pour C/C++. Il supporte le langage D et OCaml. Il propose un mode daemon et un système de cache. Il est plus rapide que SCons dans certains cas 20. http ://en.wikipedia.org/wiki/waf Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

118 Les autres Et de nombreux autres MSBuild et NAnt Pour les environnements DotNET, 2 outils intéressant existent : MSBuild 21 a été introduit avec Visual Il permet de générer le code.net (C#, VB,...). Ses fichiers de configurations s écrivent en XML. Il a pour but de remplacer l outils nmake.exe Le principal concurrent est NAnt. Il s agit du pendant du projet Ant, mais celui est plus spécialisé pour.net et est fait en C#. 21. http ://fr.wikipedia.org/wiki/msbuild Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

119 Les autres Et de nombreux autres Et ce n est pas fini J en passe des dizaines : Gant Gradle Buildr Rant Rake... Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

120 Les autres Et de nombreux autres Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

121 Conclusion Conclusion Johan Moreau (IRCAD) ENVOL - Outils de construction 27 septembre / 98

Construction de logiciel et packaging

Construction de logiciel et packaging Construction de logiciel et packaging Matthieu Herrb Ecole IDL2011, La Londes Les Maures, 5 au 9 décembre 2011 http://homepages.laas.fr/matthieu/idl2011/ Licence Ce document est sous licence Creative Commons

Plus en détail

Builds et tests Utilisation de CMake et de Dart

Builds et tests Utilisation de CMake et de Dart Builds et tests Utilisation de CMake et de Dart Séminaire Code & Travaux ASCII Fabien Spindler Projet Lagadic IRISA / INRIA Rennes http://www.irisa.fr/lagadic 16 novembre 2006 Plan 1. CMake Installation,

Plus en détail

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2 Mon premier rpm http://alexandre-mesle.com 7 juin 2010 Table des matières 1 Avant de commencer 2 1.1 RPM....................................................... 2 1.2 URPMI.....................................................

Plus en détail

Optimisation de logiciels de modélisation sur centre de calcul

Optimisation de logiciels de modélisation sur centre de calcul Optimisation de logiciels de modélisation sur centre de calcul Gérald Monard Pôle de Chimie Théorique http://www.monard.info/ Introduction Les ordinateurs sont des appareils électroniques permettant d

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Introduction aux EDI, la plateforme Eclipse Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Cours Langage C/C++ Programmation modulaire

Cours Langage C/C++ Programmation modulaire Cours Langage C/C++ Programmation modulaire Thierry Vaira BTS IRIS Avignon tvaira@free.fr «v0.1 Rappel Programmation modulaire (1/2) Le découpage d'un programme en sous-programmes est appelée programmation

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Tutoriel code::blocks

Tutoriel code::blocks Tutoriel code::blocks E. Lunéville 2006 Le logiciel code::blocks fait partie des logiciels de type EDI (Environnement de Développement Intégré, IDE en anglais) pour le langage C++. Il est multiplateforme

Plus en détail

Environnements et Outils de Développement Cours 1 Introduction

Environnements et Outils de Développement Cours 1 Introduction Environnements et Outils de Développement Cours 1 Introduction Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot - Paris 7 URL http://upsilon.cc/~zack/teaching/1112/ed6/

Plus en détail

Votre premier projet Android

Votre premier projet Android 3 Votre premier projet Android Maintenant que le SDK Android est installé, il est temps de créer votre premier projet. La bonne nouvelle est qu il n exige aucune ligne de code les outils Android créent

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Testez votre installation. Créer un répertoire vide

Testez votre installation. Créer un répertoire vide http://www.gnu.org/software/dejagnu/ Exposé sur DejaGNU Sommaire Présentation 1 Comment l obtenir.. 1 Comment obtenir la documentation 1 Comment çà marche 1 Remarque 5 Présentation DejaGnu est un système

Plus en détail

FORMATION 2012-2013. Offre de Formation - Packaging. Les bonnes pratiques du packaging avec Installshield et AdminStudio. Contact et inscriptions

FORMATION 2012-2013. Offre de Formation - Packaging. Les bonnes pratiques du packaging avec Installshield et AdminStudio. Contact et inscriptions www.experteam.fr Offre de Formation - Packaging 2012-2013 FORMATION Les bonnes pratiques du packaging avec Installshield et AdminStudio Numéro d agrément 11921398892 Contact et inscriptions Tél. +33 1

Plus en détail

TD/TP 1 Introduction au SDK d Android

TD/TP 1 Introduction au SDK d Android TD/TP 1 Introduction au SDK d Android Romain Raveaux 1 Introduction Android est un système d'exploitation pour téléphone portable de nouvelle génération développé par Google. Celui-ci met à disposition

Plus en détail

A. Architecture du serveur Tomcat 6

A. Architecture du serveur Tomcat 6 Administration du serveur A. Architecture du serveur Tomcat 6 La compréhension de l architecture interne du serveur Tomcat 6 est un pré-requis indispensable pour bien en maîtriser l administration et la

Plus en détail

La création d un paquet Debian. Aurélien Jarno. Journées du Logiciel Libre. 15 octobre 2005

La création d un paquet Debian. Aurélien Jarno. Journées du Logiciel Libre. 15 octobre 2005 Journées du Logiciel Libre 15 octobre 2005 Plan Les paquets Du code source aux binaires Qu est ce que créer un paquet? Les paquets sources Composés de trois fichiers :.orig.tar.gz Le code source original,

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

FusionInventory. Guillaume Rousse <guillomovitch@gmail.com> Journées francophones de Perl 2011

FusionInventory. Guillaume Rousse <guillomovitch@gmail.com> Journées francophones de Perl 2011 Journées francophones de Perl 2011 Sommaire 1 Solutions de gestion de parc informatique 2 Caractéristiques Capacités 3 Avancement 1 Solutions de gestion de parc informatique 2

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s) Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s)

Plus en détail

Éléments de programmation et introduction à Java

Éléments de programmation et introduction à Java Éléments de programmation et introduction à Java Jean-Baptiste Vioix (jean-baptiste.vioix@iut-dijon.u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques

Plus en détail

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12 GTK+ GLADE Page 1 sur 12 SOMMAIRE INTRO 3 Présentation de GTK+ 3 Présentation de GLADE 3 GTK+ 4 Installation 4 Les Widgets 4 Le système de hiérarchie 5 Les signaux 6 GLADE 7 Installation 7 L interface

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com Cours Plugin Eclipse Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com 1 Qui suis-je? Ancien étudiant de Jussieu - Paris VI Diplomé du Master Technologies

Plus en détail

Module.NET 3 Les Assemblys.NET

Module.NET 3 Les Assemblys.NET Module.NET Chapitre 3 Les Assemblys.NET 2011/2012 Page 1 sur 13 Contenu Cours... 3 3.1 - Définition d un assembly.net... 3 3.2 - Private assembly ou assembly privé.... 3 3.3 - Shared assembly ou assembly

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 I. Objectif du TP TP1 : Initiation à Java et Eclipse Programmation Mobile Initiation à l environnement Eclipse et aux notions de base du langage Java. II. Environnement

Plus en détail

Logiciels libres de Bibliothèques numériques : présentation. Castore & Greenstone. Les autres : CDS Invenio, EPRINTS, Dspace.

Logiciels libres de Bibliothèques numériques : présentation. Castore & Greenstone. Les autres : CDS Invenio, EPRINTS, Dspace. Formation continue Logiciels libres de Bibliothèques numériques : présentation Castore & Greenstone Les autres : CDS Invenio, EPRINTS, Dspace 12, 13 juin 2006 - Genève Benigno Delgado Assistant d enseignement

Plus en détail

1 Description générale de VISFIELD

1 Description générale de VISFIELD Guide d utilisation du logiciel VISFIELD Yann FRAIGNEAU LIMSI-CNRS, Bâtiment 508, BP 133 F-91403 Orsay cedex, France 11 décembre 2012 1 Description générale de VISFIELD VISFIELD est un programme écrit

Plus en détail

Projet De Stijl Plate-forme pour robots mobiles

Projet De Stijl Plate-forme pour robots mobiles Projet De Stijl Plate-forme pour robots mobiles Guide de prise en main de Xenomai et des cibles Version : 22 janvier 2013 S. Di Mercurio, P.-E. Hladik Table des matières 1 Glossaire.........................................

Plus en détail

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau) CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.

Plus en détail

Installation et prise en main

Installation et prise en main TP1 Installation et prise en main Android est le système d'exploitation pour smartphones, tablettes et autres appareils développé par Google. Pour permettre aux utilisateurs d'installer des applications

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes : Plate formes mobiles IFC 2 Markus Jaton Utilisation Deux utilisations assez distinctes : Téléphones évolués (Nokia, Motorola) Smartphones (Apple,, Windows) La téléphonie est en stagnation, alors que les

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn 1 Organisation Projet de développement Introduction à Eclipse Philippe Collet Licence 3 Informatique Cours 1 : principes généraux - svn Cours 2 : Redmine et gestion de projet Cours 3 : Introduction à Eclipse

Plus en détail

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB. global Outils de développement et compilation IDE, GCC/Clang, ASAN, perf, valgrind, GDB Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 1 / 36 Objectifs des outils présentés

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno (jacky.renno@capgemini.com)

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno (jacky.renno@capgemini.com) Glassfish dans le milieu médical Jacky Renno (jacky.renno@capgemini.com) Plan Contexte Métier Technique Eléments structurants Approche Méthodologie et Outillage Choix de Glassfish Automatisation Industrialisation

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer

Plus en détail

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume Studio HERITIER Emmanuelle PERSYN Elodie SCHMUTZ Amandine SCHWEITZER Guillaume Cours R Présentation projet 10/10/2013 Introduction RStudio est une interface créé par JJ Allaire Elle est sortie le 11 Février

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet Beat Wolf 1, Pierre Kuonen 1, Thomas Dandekar 2 1 icosys, Haute École Spécialisée de Suisse occidentale,

Plus en détail

Projet de développement

Projet de développement Projet de développement Introduction à Eclipse Philippe Collet Licence 3 MIAGE S6 2012-2013 http://miageprojet2.unice.fr/index.php?title=user:philippecollet/projet_de_développement_2012-2013 Plan r Application

Plus en détail

INFO-F-404 : Techniques avancées de systèmes d exploitation

INFO-F-404 : Techniques avancées de systèmes d exploitation Nikita Veshchikov e-mail : nikita.veshchikov@ulb.ac.be téléphone : 02/650.58.56 bureau : 2N8.213 URL : http://student.ulb.ac.be/~nveshchi/ INFO-F-404 : Techniques avancées de systèmes d exploitation Table

Plus en détail

Introduction à Eclipse

Introduction à Eclipse Introduction à Eclipse Eclipse IDE est un environnement de développement intégré libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES André KPOZEHOUE 11 Rue Georges Teissier, 42000 Saint-Etienne. Téléphone : 06 34 95 30 57 / 09 53 11 29 77 e-mail : kpoand@yahoo.fr Identifiant Skype : kpozehoue Mobilité géographique : France entière Disponibilité

Plus en détail

Auteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Auteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA Auteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA Sommaire 1. Introduction 2. Installation 3. Fonctionnement 4. Développement 5. Démonstration 2

Plus en détail

Systèmes de gestion de code source

Systèmes de gestion de code source Systèmes de gestion de code source Matthieu Herrb CNRS-LAAS Envol, 22 octobre 2008 http://www.laas.fr/~matthieu/talks/envol08-sgv.pdf Agenda 1 Introduction 2 Concepts d un système de gestion de version

Plus en détail

Remise à niveau d un programme JAVA du domaine public

Remise à niveau d un programme JAVA du domaine public Jean-Baptiste VIGUIER 12 septembre 2002 DCEM 2 jb.viguier@free.fr Remise à niveau d un programme JAVA du domaine public Dossier réalisé pour le laboratoire d oncogénétique Docteur P.GORRY MCU-PH institut

Plus en détail

sshgate Patrick Guiran Chef de projet support pguiran@linagora.com WWW.LINAGORA.COM

sshgate Patrick Guiran Chef de projet support pguiran@linagora.com WWW.LINAGORA.COM sshgate Patrick Guiran Chef de projet support pguiran@linagora.com WWW.LINAGORA.COM Sommaire 1. Problématique des accès aux serveurs Besoins Linagora Recherche d'une solution 2. Présentation de sshgate

Plus en détail

DotNet. Plan. Les outils de développement

DotNet. Plan. Les outils de développement DotNet Les outils de développement Version 1.03 du 16/10/2006 par Jacky Renno Plan La machine virtuelle Le kit de développement Le kit de langage Le Visual Studio.NET Le serveur web IIS 6.0 Le modeleur

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

Cours de Programmation 2

Cours de Programmation 2 Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes

Plus en détail

InstallShield 2014 FICHE TECHNIQUE. Création de programmes d installation pour Microsoft Windows

InstallShield 2014 FICHE TECHNIQUE. Création de programmes d installation pour Microsoft Windows FICHE TECHNIQUE InstallShield 2014 Création de programmes d installation pour Microsoft Windows Le N 1 mondial des technologies d installation : la technologie InstallShield est déployée par plus de 80

Plus en détail

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme 1 2 c est quoi? Technologie développée par SUN Microsystems lancée en 1995 Dans un des premiers papiers* sur le langage JAVA, SUN le décrit

Plus en détail

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Titre: Version: Dernière modification: Auteur: Statut: Licence: Titre: Mise en œuvre de mod_webobjects Version: 2.0 Dernière modification: 2010/09/06 20:00 Auteur: Aurélien Minet Statut: version finale Licence: Creative Commons

Plus en détail

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5 Système d'exploitation Sommaire Introduction...3 Objectif...3 Manipulations...3 La Sauvegarde...4 Les différents types...4 Planification...4 Les outils...5 Quelques commandes...5 La commande tar...5 La

Plus en détail

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7 Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application

Plus en détail

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min) TP n 2 : Installation et administration du serveur ProFTP Objectifs du TP Comprendre le fonctionnement du protocole FTP Installation et compilation d un paquet source Configuration, lancement et administration

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. Apache, Mod_proxy et 4D Par Timothy PENNER, Technical Services Team Member, 4D Inc. Note technique 4D-201003-05-FR Version 1 - Date 1 mars 2010 Résumé Cette note technique porte sur l utilisation du serveur

Plus en détail

pythonocc: une plateforme de développement agile d applications CAO.

pythonocc: une plateforme de développement agile d applications CAO. pythonocc: une plateforme de développement agile d applications CAO. PyConFR 2009 Cité des Sciences et de l Industrie, Paris Thomas Paviot*, Jelle Feringa* *pythonocc project: tpaviot@gmail.com; jelleferinga@gmail.com

Plus en détail

Outils pour les réseaux de neurones et contenu du CD-Rom

Outils pour les réseaux de neurones et contenu du CD-Rom Outils pour les réseaux de neurones et contenu du CD-Rom Depuis le développement théorique des réseaux de neurones à la fin des années 1980-1990, plusieurs outils ont été mis à la disposition des utilisateurs.

Plus en détail

Logiciels Open Sources et le Secteur Privé

Logiciels Open Sources et le Secteur Privé Logiciels Open s et le Secteur Privé Mai 2004 Pierre-Paul Bertieaux Open Contenu Open : Le secteur privé et le modèle Open Les créateurs d Open Les éditeurs de logiciels Les sociétés de service Utilisation

Plus en détail

Traitement de données

Traitement de données Traitement de données Présentation du module TINI Présentation du module : Le module Tini se décline en plusieurs versions, il est constitué d une carte d application et d un module processeur : Les modules

Plus en détail

Architectures web/bases de données

Architectures web/bases de données Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est

Plus en détail

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5 Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5 Machine virtuelle Machine virtuelle Machine virtuelle VMware ESX Network Shutdown Module

Plus en détail

Un serveur web léger et ouvert

Un serveur web léger et ouvert Un serveur web léger et ouvert A propos de moi Nenad Rakocevic Programmeur depuis 25 ans: C/C++, *Basic, ASM, REBOL, Javascript, Co-fondateur de Softinnov, entreprise IT à Paris Auteur de plusieurs librairies

Plus en détail

Retour d'expérience avec : OCS Inventory & GLP

Retour d'expérience avec : OCS Inventory & GLP Accueil diaporama Unité mixte de recherche 7118 Titre de la diapositive Journées Thématiques JoSy http://www.resinfo.cnrs.fr/ "Gestion, déploiement et maintenance d un parc informatique" Retour d'expérience

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.

Plus en détail

Outils de développement collaboratif

Outils de développement collaboratif Outils de développement collaboratif Envol 2012 Olivier Thauvin 24 janvier 2013 Olivier Thauvin Outils de développement collaboratif 24 janvier 2013 1 / 80 1 Avant Propos 2 Versionner 3 Communiquer 4 Documenter

Plus en détail

Installation et compilation de gnurbs sous Windows

Installation et compilation de gnurbs sous Windows Installation et compilation de gnurbs sous Windows Installation de l environnement de développement Code::Blocks (Environnement de développement) 1. Télécharger l installateur de Code::Blocks (version

Plus en détail

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail

Guide d installation de SugarCRM Open Source version 4.5.1

Guide d installation de SugarCRM Open Source version 4.5.1 Guide d installation de SugarCRM Open Source version 4.5.1 Version 1.0.2 Mentions légales Mentions légales Ce document est susceptible de modification à tout moment sans notification. Disclaimer / Responsabilité

Plus en détail

Vérifier la qualité de vos applications logicielle de manière continue

Vérifier la qualité de vos applications logicielle de manière continue IBM Software Group Vérifier la qualité de vos applications logicielle de manière continue Arnaud Bouzy Kamel Moulaoui 2004 IBM Corporation Agenda Analyse de code Test Fonctionnel Test de Performance Questions

Plus en détail

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins Un retour d expérience Patrice RINGOT Ingénieur en développement et déploiement d applications - INIST/CNRS Rencontre

Plus en détail

RTDS G3. Emmanuel Gaudin emmanuel.gaudin@pragmadev.com

RTDS G3. Emmanuel Gaudin emmanuel.gaudin@pragmadev.com RTDS G3 Emmanuel Gaudin emmanuel.gaudin@pragmadev.com PragmaDev Dédiée au développement d un AGL pour le développement des applications temps réel et embarquées. Réseau de partenaires: Formations, Service,

Plus en détail

Gestion des utilisateurs dans un environnement hétérogène

Gestion des utilisateurs dans un environnement hétérogène Gestion des utilisateurs dans un environnement hétérogène HINDERCHIETTE Aymeric - KILFIGER Estelle - SIMONET Charles - SIVADON Florian LP ASRALL March 24, 2015 1 Sommaire Introduction au projet tutoré

Plus en détail