IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

Autotools : comment faire régénérer un fichier avant un make ?


Sujet :

Systèmes de compilation

  1. #1
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut Autotools : comment faire régénérer un fichier avant un make ?
    Bonjour à toutes et à tous.

    Supposez le projet minimaliste suivant :
    |-- configure.ac
    |-- Makefile.am
    |-- src/
        `-- ...
    |-- test/
        `-- Makefile.am
        `-- test.sh
        `-- test.py.in
    test.py.in utilise des variables autotools pour générer test.py. Lancer configure génère en effet test.py, pour l'instant, tout va bien.

    Mais, si je devais modifier test.py avant de faire mon make check, configure devrait être appelé pour régénérer test.py. Mais ce n'est pas le cas. Comment faire ?

    ---

    Mon Makefile.am :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    check_SCRIPTS = \
        test.sh \
        $(NULL)
     
    check_PROGRAMS = \
        $(NULL)
     
    testsuite_bin_SOURCES = \
        $(NULL)
     
    TESTS = \
        test.sh \
        $(NULL)
     
    MOSTLYCLEANFILES = \
        *.out *.err *.log \
        $(NULL)
     
    EXTRA_DIST = \
        test.sh \
        test.py \
        $(NULL)
    Lancer make check alors que test.py a été supprimé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $ make check
    make   test.sh 
    make[1]: Entering directory `.../test'
    make[1]: Nothing to be done for `test.sh'.
    make[1]: Leaving directory `.../test'
    make  check-TESTS
    make[1]: Entering directory `.../test'
    *** './test.py' was not found - aborting test ***
    FAIL: test.sh
    =======================================
    1 of 1 test failed
    Please report to nobody@nohost.nodomain
    =======================================
    make[1]: *** [check-TESTS] Error 1
    make[1]: Leaving directory `/test
    make: *** [check-am] Error 2
    Un grand merci.

    Nota : ce n'est pas vraiment une question à propos de C++, mais je suppose que le forum C++ est celui où je trouverai le plus de connaisseurs autotools. Sentez-vous libre de me suggérer un meilleur forum.
    -- Yankel Scialom

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Salut,

    solution simple : un .cmd qui lance le tout ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Il faut voir que autotools est conçu pour le déploiement.
    l'utilisateur télécharge les sources, configure la compilation, compile puis installe. Et c'est tout.

    Régénérer un fichier signifie qu'il a déjà été généré et que quelque chose a changé. Or, ce n'est pas vraiment normal.

    A priori, il faut intégrer la génération dans le build.
    Une cible (ajoutée à .PHONY) dans le makefile devrait suffire.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Réponses: 13
    Dernier message: 07/10/2009, 17h13
  2. comment faire ouvrir un fichier par menu et par un Button
    Par takfa2008 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/05/2009, 22h09
  3. comment faire cacher un fichier?
    Par aefmaaradji84 dans le forum C++/CLI
    Réponses: 6
    Dernier message: 13/09/2007, 01h11
  4. Comment faire reconnaitre un fichier .chm
    Par Stargate SG1 dans le forum Access
    Réponses: 7
    Dernier message: 06/01/2007, 10h42
  5. Comment faire jouer un fichier musical
    Par emyblue dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/11/2006, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo