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 :

CMake execution que si modification


Sujet :

Systèmes de compilation

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 78
    Points
    78
    Par défaut CMake execution que si modification
    Bonjour ,

    J'ai un problème que j'espere vous pourrez m'aider à résoudre.
    Mon but est de convertir des xml en cpp+h (via un script) uniquement si les cpp correspondant n'ont pas déjà été convertie ou que les xml est plus récent que cpp déjà convertie.
    Mais à chaque appel de make les xml sont converties en cpp .

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    set(FAKE_TARGET fakeTarget)
     
    #Recuperation de tous les xml
    FILE(GLOB inFiles RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
        "${CMAKE_CURRENT_SOURCE_DIR}/avc/*.xml")
     
    #Conversion de chacun des xml en CPP+H
    FOREACH(infileName ${inFiles})
        MESSAGE("Process file XML: ${infileName}")
        STRING(REGEX REPLACE "avc/" "" outfileName "${infileName}")
        STRING(REGEX REPLACE ".xml" "" fileName "${outfileName}")
        SET(cppfile "avc/src/${fileName}.cpp")
     
        if(NOT EXISTS ${cppfile} OR ${infileName} IS_NEWER_THAN ${cppfile} )
            add_custom_target(
                    fakeTarget
                    COMMAND perl convert.pl ${infileName}
                    COMMENT tututututu
            )
     
        endif()
     
    ENDFOREACH(infileName)
     
     
    file(
            GLOB_RECURSE
     
            source_files
     
            src/*
            avc/src/*
    )
     
    add_executable(
     
            my_exe
     
            ${source_files}
    )
     
    add_dependencies(my_exe ${FAKE_TARGET})

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Si j'ai bien compris ton problème, pourquoi n'utilises-tu pas add_custom_command. Il est possible de spécifier les dépendances (DEPENDS) et le fichier produit est régénéré à chaque fois que la source est mise à jour.

    [EDIT] Oups désolé pour le déterrage de post, j'ai pas vérifié la date. En espérant que ça puisse servir quand même .

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 78
    Points
    78
    Par défaut
    Merci je vais essayer

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 78
    Points
    78
    Par défaut
    Merci ça a marché.

    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        if(NOT EXISTS ${cppfile} OR ${infileName} IS_NEWER_THAN ${cppfile} )
            add_custom_target(
                    fakeTarget
                    COMMAND perl convert.pl ${infileName}
                    COMMENT tututututu
            )
     
        endif()
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        add_custom_command(
            OUTPUT ${cppfile}
            COMMAND perl convert.pl ${infileName}
            DEPENDS ${infileName}
            )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/07/2012, 11h37
  2. Execution macro après modification cellule
    Par d0n32 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/01/2012, 15h10
  3. Réponses: 1
    Dernier message: 28/11/2011, 10h21
  4. shell script executable que depuis le /
    Par hsion11 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 19/10/2009, 16h47
  5. Netbeans n'execute que les anciennes versions
    Par oxylander dans le forum NetBeans
    Réponses: 3
    Dernier message: 21/11/2006, 17h32

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