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 et sous répertoires


Sujet :

Systèmes de compilation

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Cmake et sous répertoires
    Bonjour

    j'essaie d'utiliser CMake pour générer les makefiles d'un gros projet qui était jusqu'à présent compilé avec make à partir de makefiles générés par SNIFF, un progiciel antédiluvien . Je débute completement avec Cmake, mais je compte beaucoup dessus, et il a l'immense avantage d'être toujours maintenu.

    pour classer les sources les developpeurs ont eu l'idee de les organiser dans des sous répertoires. par exemple je vais avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    src
        - lib1_ihm (contient des sources, puis les obj apres compil)
        - lib1_calc (contient des sources, puis les obj apres compil)
        - lib2_aux (contient des sources, puis les obj apres compil)
        - lib1_dll (contient seulement la dll resultant du link des obj de lib1_ihm et lib1_calc)
        - lib2_dll (contient seulement la dll resultant du link des obj de lib2_aux)
    en gros une fois que les makefiles sont générés, make se balade d'un repertoire à l'autre pour compiler les objets puis construire les cibles.

    Avec Cmake je ne retrouve pas cette façon de faire :
    - on déclare une cible qui peut-être soit une lib soit un exe, sinon je pense que le make ne fait rien
    - ou alors on peut faire un add_subdirectory pour que Cmake descende dans un sous repertoire
    - ou enfin on remonte toutes les sources dans le CmakeList.txt de la lib


    Est ce qu'il est possible de mixer un peu le tout pour avoir par exemple pour lib1_dll:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    add_subdirectory(../lib1_ihm)
    add_subdirectory(../lib1_calc)
     
    add_library(lib1_dll $lib1_ihm $lib1_calc)
    avec dans lib1_ihm et dans lib1_calc des fichiers CmakeList.txt qui declarent juste la liste des fichiers à compiler?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Généralement, on met un CMakeLists.txt dans chaque sous-répertoire et on les référence dans le CMakeLists à la racine avec add_subdirectory.

    Ensuite, dans chaque sous CMakeLists.txt, on construit la librairie, l'exécutable. Une librairie construite dans le sous-répertoire A est tout à fait utilisable dans le sous-répertoire B à condition d'ajouter A avant B avec add_subdirectory.

    Enfin, tu peux positionner la variable CMAKE_RUNTIME_OUTPUT_DIRECTORY pour indiquer où placer les DLLs (http://www.cmake.org/cmake/help/cmak...TPUT_DIRECTORY).

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Merci de ta réponse

    c'est ce que j'ai fait finalement et ça marche pas trop mal...
    Bon je galere pour gerer les fichiers un peu alambiqués type idl ou grammaires lex/yacc, mais pour les fichiers c++ c'est vrai que l'outil est carrément plus puissant que sniff qu'on utilise, notamment pour le calcul des dépendances

    et au moins il est maintenu et il y a une grosse communauté d'utilisateurs...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Pour lex/yacc, tu peux t'appuyer sur les modules de CMake si ce n'est pas déjà ce que tu fais.

    http://www.cmake.org/cmake/help/cmak...dule:FindBISON
    http://www.cmake.org/cmake/help/cmak...odule:FindFLEX

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/05/2007, 23h20
  2. [MS-DOS] Supprimer tout les sous répertoires contenu dans un
    Par Furius dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 30/11/2005, 12h24
  3. Lister les fichiers de plusieurs sous-répertoire ?
    Par ratbiker dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 25/11/2005, 21h20
  4. script qui explore les sous-répertoire ?
    Par farenheit dans le forum Flash
    Réponses: 9
    Dernier message: 20/07/2005, 12h02
  5. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33

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