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
    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

    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
    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