Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/01/2009, à 19:14

geenux

[Résolu] cmake : où trouver de la documentation.

Bonjour,
Je commence à trouver ça assez fastidieux de maintenir à la main des makefiles pour différentes plateformes, surtout que je commence à avoir des projets assez gros. Je me suis renseigné sur les programmes existants pour faire ça, et cmake semble être le bon choix.
Par contre, j'ai beau cherché je ne trouve pas de documentation claire me permettant d'utiliser cmake.

Voici le type de projet que j'aimerai compiler avec cmake :
- Sfml
- Qt (à la limite il y a qmake qui fonctionne très bien, mais vu que KDE utilise cmake il doit bien y avoir une raison)
- Gtkmm

Ou pourrais-je trouver une documentation claire, qui explique réellement comment faire (l'anglais ne me dérange pas).

Hors ligne

#2 Le 28/01/2009, à 19:35

Karl_le_rouge

Re : [Résolu] cmake : où trouver de la documentation.

http://www.cmake.org/Wiki/CMake 
http://live.gnome.org/gtkmm/UsingCMake //C'est le même principe pour toutes les bibliothèque qui utilise pkg-config.
www-flc.desy.de/ldcoptimization/documents/talks/CMake_Tutorial.pdf
http://www.elpauer.org/stuff/learning_cmake.pdf

Quand à KDE, ils ont des besoins un peu plus évolués que ce qu'offre qmake, donc si qmake te convient, pourquoi en changer ?

Hors ligne

#3 Le 28/01/2009, à 19:47

geenux

Re : [Résolu] cmake : où trouver de la documentation.

qmake me convient pour les projets Qt. Mais vu que je compte utiliser cmake pour les autres projets, je me disais que ça pourrait être bien d'utiliser la même chose partout.
Merci pour les liens, je vais regarder ça.

Hors ligne

#4 Le 28/01/2009, à 22:00

Link31

Re : [Résolu] cmake : où trouver de la documentation.

Karl_le_rouge a écrit :

http://live.gnome.org/gtkmm/UsingCMake //C'est le même principe pour toutes les bibliothèque qui utilise pkg-config.

Pendant qu'on parle de CMake, je me demandais quelque chose : est-ce que l'utilisation de pkg-config (avec la macro pkg_check_modules) est portable sous windows et Mac OS ? De préférence sans avoir à installer tout un environnement de type Cygwin. Par exemple, avec seulement Visual Studio d'installé sur le windows.

J'essaie toujours de coder au maximum de façon portable, et je suis passé récemment à CMake dans un gros projet, toujours dans un but de portabilité. Ça serait vraiment dommage que mon CMakeLists.txt ne fonctionne que sous GNU/Linux à cause de ça. Je précise que je n'ai pas encore de windows à disposition pour tester.

Et si pkg_check_modules n'est pas portable, comment obtenir la même chose de façon multi-plateformes ?

Dernière modification par Link31 (Le 28/01/2009, à 22:02)

Hors ligne

#5 Le 28/01/2009, à 22:07

Karl_le_rouge

Re : [Résolu] cmake : où trouver de la documentation.

Aucun problème avec OS X que ce soit en ligne de commande ou avec XCode (qui utilise make), tout comme sous GNU/Linux. Et pour Windows, il te faut msys pour pouvoir utiliser pkg-config.
http://gnunet.org/hacking_win32_build.php3?xlang=french

Hors ligne

#6 Le 28/01/2009, à 22:14

Link31

Re : [Résolu] cmake : où trouver de la documentation.

Ça veut dire que sous windows, il faut mingw pour pouvoir l'utiliser ? J'aimerais bien ne pas imposer aux utilisateurs de windows d'installer une bonne partie de GNU juste pour compiler un programme, comme je n'aimerais pas installer tout l'userland microsoft sous GNU/Linux pour une simple compilation. Est-ce qu'il n'y a pas un autre moyen ? J'ai besoin du chemin des headers, des bibliothèques et j'ai aussi absolument besoin des cflags que retourne normalement pkg-config.

Hors ligne

#7 Le 28/01/2009, à 23:14

Yannick_LM

Re : [Résolu] cmake : où trouver de la documentation.

J'ai besoin du chemin des headers, des bibliothèques et j'ai aussi absolument besoin des cflags que retourne normalement pkg-config.

Pour les grosses lib (au hasard, OpenGL, Qt, boost, ...)  t'as en général le cmakemodule kivabien, sans avoir besoin de mingwin
(dans /usr/share/cmake-2.6/Modules/ sous linux, quelque part ailleurs sous windows)

(Je suis presque sûr de moi pour qt et boost, j'ai pas regardé pour le reste).

Et les cmakemodules définissent exactement ça:
chemin des headers,  INCLUDE_DIR
bibliothèques, LIBRARIES
cflags  DEFINITIONs
(en gros)

à noter aussi, la macro CONFIGURE_FILE qui fait en gros la même chose que les autotools, pour générer des headers avec les variables qu'on veut dedans.

Et le système de Cpack qui permet de faire des nullSoft et des paquets debian
(J'ai pas testé ça, non plus)

Voilà, voilà wink

EDIT:
http://www.cmake.org/Wiki/Really_Cool_CMake_Features

Autant laisser ceux qui savent faire la propagande de leurs trucs wink

Dernière modification par Yannick_LM (Le 28/01/2009, à 23:19)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#8 Le 28/01/2009, à 23:16

geenux

Re : [Résolu] cmake : où trouver de la documentation.

Ok, merci, j'ai réussi à compiler un projet sfml avec cmake (avec un script cmake pour trouver sfml trouvé sur sur ce sujet).
Je devrais m'en sortir pour les autres je pense.

[edit 6 juin 2009] Bon, bah le script est plus sur le topic original, donc je le poste ici :
Fichier FindSFML.cmake

# Locate SFML library
# This module defines
# SFML_LIBRARY, the name of the library to link against
# SFML_FOUND, if false, do not try to link to SFML
# SFML_INCLUDE_DIR, where to find SFML headers
#
# Created by Nils Hasenbanck. Based on the FindSDL_*.cmake modules,
# created by Eric Wing, which were influenced by the FindSDL.cmake
# module, but with modifications to recognize OS X frameworks and
# additional Unix paths (FreeBSD, etc).

SET(SFML_COMPONENTS
    System
    Audio
    Graphics
    Network
    Window
)

SET(SFML_INCLUDE_SEARCH_DIR
    ~/Library/Frameworks
    /Library/Frameworks
    /usr/local/include/SFML
    /usr/include/SFML
    /usr/local/include
    /usr/include
    /sw/include/SFML # Fink
    /sw/include
    /opt/local/include/SFML # DarwinPorts
    /opt/local/include
    /opt/csw/include/SFML # Blastwave
    /opt/csw/include
    /opt/include/SFML
    /opt/include
)

SET(SFML_LIBRARY_SEARCH_DIR
    ~/Library/Frameworks
    /Library/Frameworks
    /usr/local
    /usr
    /sw
    /opt/local
    /opt/csw
    /opt
)

FOREACH(COMPONENT ${SFML_COMPONENTS})
    STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
    STRING(TOLOWER ${COMPONENT} LOWERCOMPONENT)
    FIND_LIBRARY(SFML_${UPPERCOMPONENT}_LIBRARY
        NAMES sfml-${LOWERCOMPONENT}
        HINTS
        $ENV{SFMLDIR}
        PATH_SUFFIXES lib64 lib
        PATHS ${SFML_LIBRARY_SEARCH_DIR}
    )
    FIND_PATH(SFML_${UPPERCOMPONENT}_INCLUDE_DIR ${COMPONENT}.hpp
        HINTS
        $ENV{SFMLDIR}
        PATH_SUFFIXES include
        PATHS ${SFML_INCLUDE_SEARCH_DIR}
    )
    IF(SFML_${UPPERCOMPONENT}_INCLUDE_DIR AND SFML_${UPPERCOMPONENT}_LIBRARY)
        LIST(APPEND SFML_LIBRARY ${SFML_${UPPERCOMPONENT}_LIBRARY})
        LIST(APPEND SFML_INCLUDE_DIR ${SFML_${UPPERCOMPONENT}_INCLUDE_DIR})
        LIST(REMOVE_DUPLICATES SFML_LIBRARY)
        LIST(REMOVE_DUPLICATES SFML_INCLUDE_DIR)
    ENDIF(SFML_${UPPERCOMPONENT}_INCLUDE_DIR AND SFML_${UPPERCOMPONENT}_LIBRARY)
ENDFOREACH(COMPONENT)

SET(SFML_FOUND "NO")
IF(SFML_SYSTEM_LIBRARY AND SFML_INCLUDE_DIR)
    SET(SFML_FOUND "YES")
ENDIF(SFML_SYSTEM_LIBRARY AND SFML_INCLUDE_DIR)

INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SFML DEFAULT_MSG SFML_LIBRARY SFML_INCLUDE_DIR)

Dernière modification par geenux (Le 19/06/2009, à 21:18)

Hors ligne

#9 Le 28/01/2009, à 23:28

Link31

Re : [Résolu] cmake : où trouver de la documentation.

Yannick_LM a écrit :

Pour les grosses lib (au hasard, OpenGL, Qt, boost, ...)  t'as en général le cmakemodule kivabien, sans avoir besoin de mingwin
(dans /usr/share/cmake-2.6/Modules/ sous linux, quelque part ailleurs sous windows)

(Je suis presque sûr de moi pour qt et boost, j'ai pas regardé pour le reste).

Je sais bien, mais malheureusement il n'y a pas tous les modules dont j'aurais besoin. Par exemple : Ogre ou libsndfile. J'ai trouvé des modules CMake qui les gèrent, mais ils utilisent tous pkg-config. Ça marche très bien sous GNU/Linux, mais probablement pas sous windows. Sachant que je suis passé à CMake pour son côté multi-plateformes, ce n'est pas pour installer Cygwin ou Mingw derrière. Autant garder les autotools dans ce cas.

Hors ligne

#10 Le 28/01/2009, à 23:50

Yannick_LM

Re : [Résolu] cmake : où trouver de la documentation.

arf hmm
Autant pour moi, désolé.

CMake est encore peut-être un peu jeune, mais s'il continue à se répandre, on finira peut-être par pouvoir faire du cross-plateforme facilement.

<mode bisounours>
Ou alors, windows aura fait faillite avant, et le problème sera réglé wink
</mode bisounours>


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne