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 : set all source files in a directory


Sujet :

Systèmes de compilation

  1. #1
    Membre éclairé
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Par défaut CMake : set all source files in a directory
    Salut.

    Je débute avec Cmake et j'aurai une petite question.

    Admettons que mon projet soit dans un répertoire proj. Je vais créer une CMakeLists dans proj/CMakeLists.txt.

    L'ensemble de mes fichiers .h et .cpp sont dans proj/src/.

    La question est simple : comment créer une variable qui contient tous les .cpp de proj/src/, une autre qui contient tous les .h de proj/src/ et comment compiler tout ça un exécutable ?

    Ca doit être simple mais je n'ai pas trouvé.

    Merci beaucoup

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    file(GLOB src/*.cpp SRC)

  3. #3
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    Salut,

    tout simplement en utilisant GLOB. La syntaxe sera la suivante : FILE (GLOB HEADERS *.hpp) où HEADERS est le nom de la variable que tu souhaites donner et que tu utiliseras dans ta commande de compilation.

  4. #4
    Membre éclairé
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Par défaut
    Merci beaucoup.
    Mais en testant, en fait mon problème est plus compliqué que ça.
    En fait, je cherche à passer le système de build d'une bibliothèque existante à CMake.

    Avec reprenant l'exemple précédent, le problème est que dans les .cpp, par exemple dans exemple.cpp le lien avec les headers a été noté <src/exemple.h> au lieu de "exemple.h" (et avec l'ancien makefile, cela marchait bien.

    Si tel quel, j'essaye de compiler, cela me donne "src/exemple.h" not found. Comment résoudre le problème avec CMake ?

  5. #5
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    Je ne suis pas sûr d'avoir tout compris mais je te dirais de regarder du côté des INCLUDE_DIRECTORIES et d'ajouter les bons.

  6. #6
    Membre éclairé
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Par défaut
    En gros j'ai les fichiers suivants :

    /cmaketest/CMakeLists.txt qui produit /cmaketest/Makefile
    /cmaketest/src/exemple.cpp
    /cmaketest/src/exemple.h


    Sauf que dans exemple.cpp, le linkage à exemple.h est sous la forme #include <src/exemple.h>

    Comment faire pour que cela compile bien (actuellement j'ai une erreur à l'exécution du Makefile qui me dit que src/exemple.h n'est pas trouvé) ?

    Mon CMakeLists est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
    PROJECT(cmaketest)
     
    SET(cmaketest_SRCDIR src)
    AUX_SOURCE_DIRECTORY(${cmaketest_SRCDIR} cmaketest_SOURCES)
    FILE(GLOB cmaketest_HEADERS ${cmaketest_SRCDIR}/*.h )
     
    ADD_EXECUTABLE(cmaketest ${cmaketest_SOURCES} ${cmaketest_HEADERS})

  7. #7
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Comme l'a dit linktim, il te faut jouer au niveau des include directories avec la commande appropriée : include_directories
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Ca aide bien à démarrer : Initiation à CMake par Florian Goujeon

    Pour le répertoire, si j'ai bien suivi, ce devrait être include_directorie(/cmaketest/.) non?

Discussions similaires

  1. Error compiling report java source files
    Par identifia dans le forum Jasper
    Réponses: 17
    Dernier message: 07/07/2014, 15h36
  2. définitions Data Set, Binding Source
    Par miklmikl dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/06/2009, 11h29
  3. Réponses: 0
    Dernier message: 04/11/2008, 07h41
  4. Réponses: 2
    Dernier message: 27/10/2008, 11h49
  5. Réponses: 3
    Dernier message: 04/04/2008, 09h43

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