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

Eclipse C & C++ Discussion :

cmake & eclipse ?


Sujet :

Eclipse C & C++

  1. #1
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut cmake & eclipse ?
    Bonjour,

    Après avoir lu plusieurs fois qu'il ne fallait pas utiliser le generator de makefile d'éclipse je me suis rendu compte que en effet il peut être très dangereux de l'utiliser si on développe un projet multi-platform.

    Cependant ma connaissance en makefile est assez faible (le truc typique de l'uni avec des fichiers dans src/ et dans includes/). Je voudrais donc faire un meilleur makefile qui soit portable pour windows et linux, pouvant inclure des sources dans différents répertoires...

    Je me suis demandé si il ne serait pas plus facile de s'interesser au cmake. Et si qqun avait deja tester l'intégration des cmake avec eclipse ganymede.

  2. #2
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    salut,

    yep, moi je l'utilise tout les jours. il y a un générateur pour eclipse cdt4 dans la dernière version de cmake, qui en plus permet d'utiliser le compilateur microsoft si on on peut pas utiliser gcc.

    cf ici

    il y a quelques trucs genant, comme le fait qu'il y un projet "source" et un projet "build" (car eclipse ne gère pas différents types de build pour le meme projet), mais bon il n'y a pas d'outil parfait, on s'y habitue.

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Bon je me suis un peu renseigner a ce niveau la mais je suis pas encore tout a fait pret pour l'integration de mon projet avec cmake.

    - 1: Est-ce que j'ai besoin des plugins: Cmakeed et CmakeBuilders ????
    - 2: Est-ce que tu as un bon exemple de cmake, pour un projet simple...
    - 3: Le probleme de source et builds est-ce que cela est un gros probleme au niveau de la gestion du code source en SVN. Quelle structure de code tu me conseil...
    - 4: Si je file mon projet a qqun est-ce qu'il doit avoir cmake installer ou cela n'est pas obliger.

    merci encore... et vraiment tres interessant ton tutorial ... car wxWidget est assez lent avec MinGW... j'aimerais bien le tester avec MSVC.

  4. #4
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Citation Envoyé par elraton Voir le message
    - 1: Est-ce que j'ai besoin des plugins: Cmakeed et CmakeBuilders ????
    cmakeed donne la coloration syntaxique, et un tout petit peu de complétion automatique. c'est pratique quand tu démarres (la coloration permet de savoir si tu t'es pas trompé dans le nom d'une commande). par contre je l'ai enlevé car il était source de problème avec eclipse 3.4. je ne sais pas si il a été mis à jour depuis

    cmakebuilders je connais pas


    - 2: Est-ce que tu as un bon exemple de cmake, pour un projet simple...
    ben mes projets consistent principalement en des commandes basiques, du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    project( TotoGui )
    add_library( totolib source1.c source2.c )
     
    set( TOTO_SRC source3 source4 source 5 source 6 )
    add_executable( totobin ${TOTO_SRC} )
     
    target_link_libraries( totobin totolib)
    a force d'en faire, j'ai l'impression que ca parle de soi meme, mais si t'as des questions n'hésite pas

    - 3: Le probleme de source et builds est-ce que cela est un gros probleme au niveau de la gestion du code source en SVN. Quelle structure de code tu me conseil...
    mmm non je ne vois pas de problème, car sur svn tu ne stocke que tes sources (j'espère?), pas tes résultats de compilation. cmake "proprifie" un peu la compilation en mettant les résultats dans un dossier à part (binary folder)


    la structure du code importe peu, mais j'ai disons 3 répertoires "src", "lib" et "res", et il y a un CMakeLists.txt dans chaque répertoire et un à la racine qui les inclut tous (add_subdirectory)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    - 4: Si je file mon projet a qqun est-ce qu'il doit avoir cmake installer ou cela n'est pas obliger.
    si quelqu'un veut compiler ton code, il doit installer cmake en effet. sous windows c'est une étape en plus. sous linux, il est souvent installé par défaut maintenant.

    merci encore... et vraiment tres interessant ton tutorial ... car wxWidget est assez lent avec MinGW... j'aimerais bien le tester avec MSVC.
    je t'en prie. ca fait plaisir de répondre à des questions précises et bien posées

    a+

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  5. #5
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Bon visiblement je ne suis pas sur d'y arriver correctement pour mon projet.

    Alors j'ai comme structure de projet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ${PROJECT_PATH}
    ${PROJECT_PATH}/src/
    ${PROJECT_PATH}/src/include/
    ${PROJECT_PATH}/cMakeScripts/
    ${PROJECT_PATH}/Debug/
    ${PROJECT_PATH}/sdk_builds/ec_mingw
    ${PROJECT_PATH}/sdk_builds/ec_gcc
    ${PROJECT_PATH}/sdk_builds/msvc
    Pour l'instant j'obtient en generant un projet eclipse un .cproject et .project dans le repertoire sdk_builds/ec_gcc/
    Cependant quand j'import ce projet les sources ne sont pas visible, mais si le projet compile correctement. Il y a un moyen de creer un liens ??? vers ces fichiers... J'ai donc un projet pour compiler et un autres pour developper (C'est pas terrible comme solution)

    Sinon je comprend pas ou ca merde mais dans mon dossier src/ j'ai comme fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    include/
    CmakeLists.txt
    frames.c
    s400server.c
    S4N_Packet.c
    UDP_Packet.c
    UDP_Socket.c
    et quand cMake appel src/CmakeLists.txt:
    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
     
    #Find openCV package for CMAKE.
    find_package(OpenCV REQUIRED)
     
    #Include openCV
    include_directories(${OpenCV_INCLUDE_DIR})
     
    #include headers
    include_directories(include)
     
    #Define the name
    set(S4NPS_SRC frames s400server S4N_Packet UDP_Packet UDP_Socket)
     
    #create the executable
    add_executable(S4NPSimu S4NPS_SRC)
    j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CMake Error in src/CMakeLists.txt:
      Cannot find source file "S4NPS_SRC".  Tried extensions .c .C .c++ .cc .cpp
      .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx

    PS: Derniere question, est-ce qu'il est possible de lui dire de chercher tout les *.c, *.h dans un repetoire a l'exception de Test.c par exemple.

  6. #6
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Citation Envoyé par elraton Voir le message
    Bon visiblement je ne suis pas sur d'y arriver correctement pour mon projet.

    Alors j'ai comme structure de projet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ${PROJECT_PATH}
    ${PROJECT_PATH}/src/
    ${PROJECT_PATH}/src/include/
    ${PROJECT_PATH}/cMakeScripts/
    ${PROJECT_PATH}/Debug/
    ${PROJECT_PATH}/sdk_builds/ec_mingw
    ${PROJECT_PATH}/sdk_builds/ec_gcc
    ${PROJECT_PATH}/sdk_builds/msvc
    Pour l'instant j'obtient en generant un projet eclipse un .cproject et .project dans le repertoire sdk_builds/ec_gcc/
    Cependant quand j'import ce projet les sources ne sont pas visible, mais si le projet compile correctement. Il y a un moyen de creer un liens ??? vers ces fichiers...
    j'utilise pas l'import, ce que je fais c'est que je crée un nouveau projet eclipse (dans le workspace donc), et lorsque je génère le projet avec cmake, je lui indique le dossier du projet juste créé en tant que "build folder"

    J'ai donc un projet pour compiler et un autres pour developper (C'est pas terrible comme solution)
    c'est l'inconvénient dont je te parlais, mais dans le projet build, il y a un raccourci vers le projet source, donc au final j'ai qu'un seul projet d'ouvert. on s'y habitude vite.

    Sinon je comprend pas ou ca merde mais dans mon dossier src/ j'ai comme fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    include/
    CmakeLists.txt
    frames.c
    s400server.c
    S4N_Packet.c
    UDP_Packet.c
    UDP_Socket.c
    et quand cMake appel src/CmakeLists.txt:
    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
     
    #Find openCV package for CMAKE.
    find_package(OpenCV REQUIRED)
     
    #Include openCV
    include_directories(${OpenCV_INCLUDE_DIR})
     
    #include headers
    include_directories(include)
     
    #Define the name
    set(S4NPS_SRC frames s400server S4N_Packet UDP_Packet UDP_Socket)
     
    #create the executable
    add_executable(S4NPSimu S4NPS_SRC)
    j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CMake Error in src/CMakeLists.txt:
      Cannot find source file "S4NPS_SRC".  Tried extensions .c .C .c++ .cc .cpp
      .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx
    c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    add_executable(S4NPSimu ${S4NPS_SRC})
    , pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    add_executable(S4NPSimu S4NPS_SRC)
    PS: Derniere question, est-ce qu'il est possible de lui dire de chercher tout les *.c, *.h dans un repetoire a l'exception de Test.c par exemple.
    oui, mais je ne me souvient plus comment

    file( GLOB..) ou un truc comme ca. cf la doc : http://www.cmake.org/cmake/help/cmake2.6docs.html

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  7. #7
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Bon alors j'ai tester ta solution mais il y a trois problemes...
    Le premier c'est que je ne trouve pas le lien vers les sources.
    Le deuxieme c'est que l'executable se trouve donc dans mon repertoire
    builds/ec_gcc/src/Executable. J'aimerais savoir ou tu me conseil de le mettre et comment gerer les config DEBUG RELEASE.
    Le dernier c'est que ca gerer le SVN a travers eclipse m'est impossible a partir du projet build (je garde pour l'instant le projet src qui a son propre makefile).

    Est-ce que tu pourrait me suggerer un exemple de structure de projet qui utilise Cmake, SVN et eclipse.


    PS: pour creer une liste de tous les fichiers *.c avec comme execption test1.c et test2.c il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FILE(GLOB SRC_FILES *.c)
    LIST(REMOVE_ITEM SRC_FILES
      ${CMAKE_CURRENT_SOURCE_DIR}/test1.c
      ${CMAKE_CURRENT_SOURCE_DIR}/test2.c
      )

  8. #8
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    je t'ai mis un screenshot c'est plus simple.

    mon projet source est Visiophone. c'est celui qui est sur SVN, et qui contient tout les CMakeLists.txt

    mon projet build est VisiophoneRelease. il contient un raccourci nommé VisiophoneCasper (c'est le nom donné à la commande project() dans cmake). Il contient aussi tout un tas de fichier temporaires que je n'ai jamais touché et qui ne vont surtout pas sur SVN

    c'est aussi simple que ca
    Images attachées Images attachées  

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  9. #9
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Okay ca commence a devenir un peu plus clair. Mais relit mon message de dessus car je l'ai editer...

    Cependant je n'ai aucun liens vers la source qui se creer automatiquement.

    PS: C'est quoi ton dossier res ?

  10. #10
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    pour le répertoire de sortie, tu dois régler une variable, moi je les met dans le dossier bin/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set( EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin )
    si t'as pas de lien, c'est peut etre parce que t'as pas utilisé la fonction project() ?


    à propos de SVN, c'est vrai qu'il faut ouvrir le projet source pour pouvoir commiter à partir d'eclipse, j'avais oublié ca. moi je commit souvent en ligne de commande..

    res, c'est pour ressources, des images, des fichiers conf, etc.

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  11. #11
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Bon bein c'est bizarre, ca ne functionne peut etre pas sous linux..

    pourtant mon CMakeLists.txt dans le fichier racine est:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ## CMake compatibility issues
    CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
     
    ## Set Project
    PROJECT(S4NPSimuLink)
     
    ## Set Path for cmake scripts.
    set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/conf)
    set(${PROJECT_NAME}_MAJOR_VERSION 0 )
     
    ## Add subdirectory
    ADD_SUBDIRECTORY(src)

    Encore desolez de tous ces conseil mai je crois qu'un bon tutoriel est indispensable

  12. #12
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Ah si tu es sous linux, peut etre que tu utilises une version moins récente?

    Ou alors, essaie d'effacer le build et de le régénérer.

    C'est vrai que c'est dommage qu'il n'y a pas de bon tutorial sur cmake

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  13. #13
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Okay j'ai trouvé pourquoi ca ne fonctionait pas bien.
    Il fallait generer le projet "build" dans un autre repertoire que celui de cMakeLists.txt

    Visiblement ca marche bien maintenant !!!!

    Merci encore, mais ne t'inquiete pas je risque de te poser encore certaine question.

  14. #14
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    au cas où qq'un tomberais sur ce post à la recherche d'infos : http://www.cmake.org/Wiki/CMake#Tutorials

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut CMakeBuilder
    Bonjour à tous,

    CMakeBuilder est un plugin CMake qui permet de manipuler les fonctions de bases de CMake au travers d'éclipse.

    Il propose aussi la coloration syntaxique et la complétion de code.

    http://www.cmakebuilder.com pour plus d'informations. Ou directement http://www.cmakebuilder.com/update depuis eclipse pour l'installer

    Cdlt

  16. #16
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Salut, c'est encore moi!!!

    Bon je viens de m'apercevoir d'un truk pas cool, je n'arrive pas a lier mon debug

    alors voila la structure de mon projet.

    ./project
    ./project/trunk/ (Ici se trouve tous les fichiers qui vont sur le SVN)
    ./project/ec_unix/ (Ici se trouve les fichiers generer par cmake)

    Alors tous ce passe tres bien au niveau de la compilation, creation des liens, ...

    Le seul problème c'est pour debugger les fichiers dans ec_unix, car il m'est impossible de mettre un break point. Il dit qu'il ne trouve pas les fichiers sources!

    Est-ce que tu as le meme genre de probleme.

  17. #17
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Salut,

    désolé mais ca fait longtemps que je ne peut plus utiliser gcc (mais le compilateur microsoft), alors le débuggeur eclipse je peut m'assoir dessus.

    mais bon avec gcc je me souviens que ca marchait bien, alors regarde si ton index fonctionne et est bien à jour.

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

Discussions similaires

  1. Eclipse en français
    Par Super Castor dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 02/06/2007, 15h59
  2. Servlet dans Eclipse ?
    Par unflag dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2003, 18h46

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