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

 C++ Discussion :

[CMake] création d'un projet SFML


Sujet :

C++

  1. #1
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut [CMake] création d'un projet SFML
    Bonjour,

    Je cherche à créer un projet avec la SFML avec CMake.
    J'ai compilé la SFML en fonction de mon compilateur (vc11).
    J'ai créé mon fichier 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
     
    PROJECT(BasePropre)
     
    SET(EXE_NAME "test")
     
    SET(EXECUTABLE_OUTPUT bin/${CMAKE_BUILD_TYPE})
     
    FILE (GLOB_RECURSE sourceFiles src/*)
     
    ADD_EXECUTABLE(${EXE_NAME} ${sourceFiles})
     
    SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
    FIND_PACKAGE(SFML 2 REQUIRED system window graphics network audio)
    if(SFML_FOUND)
    	INCLUDE_DIRECTORIES(${SFML_INCLUDE_DIR})
    	TARGET_LINK_LIBRARIES(${EXE_NAME} ${SFML_LIBRARIES})
    endif()
     
    FIND_PACKAGE(OpenGL REQUIRED)
    INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
    if(OPENGL_FOUND)
    	TARGET_LINK_LIBRARIES(${EXE_NAME} ${OPENGL_LIBRARIES})
    endif()
    Le problème que j'ai est que CMake ne trouve pas le SFML_DIR. J'essaye donc de lui passer le chemin du dossier de la SFML compilé mais l'erreur persiste.

    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
    CMake Error at CMakeLists.txt:14 (FIND_PACKAGE):
      By not providing "FindSFML.cmake" in CMAKE_MODULE_PATH this project has
      asked CMake to find a package configuration file provided by "SFML", but
      CMake did not find one.
     
      Could not find a package configuration file provided by "SFML" (requested
      version 2) with any of the following names:
     
        SFMLConfig.cmake
        sfml-config.cmake
     
      Add the installation prefix of "SFML" to CMAKE_PREFIX_PATH or set
      "SFML_DIR" to a directory containing one of the above files.  If "SFML"
      provides a separate development package or SDK, be sure it has been
      installed.
    Quel est le dossier à passer en paramètre a SFML_DIR ?

    Cordialement,
    Robin

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Bonjour

    Tu peux peut-être t'inspirer de ce projet qui utilise la SFML 2.1 avec CMake.
    https://gitorious.org/new_sfml_project/new_sfml_project

    En ajoutant le bon répertoire (l'équivalent de /usr/ ou /usr/local/) dans la variable CMAKE_PREFIX_PATH.

  3. #3
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut
    Merci pour cette réponse.
    En forçant la valeur du FindSFML on arrive à créer un projet.

    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
    CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
     
    PROJECT(BasePropre)
     
    SET(EXE_NAME "BasePropre")
     
    SET(EXECUTABLE_OUTPUT bin/${CMAKE_BUILD_TYPE})
     
    FILE (GLOB_RECURSE sourceFiles src/*)
     
    ADD_EXECUTABLE(${EXE_NAME} ${sourceFiles})
     
    FIND_FILE(SFML_CMAKE_DIR "cmake/Modules/FindSFML.cmake")
    if(SFML_CMAKE_DIR)
    	string(REPLACE "FindSFML.cmake" "" SFML_CMAKE_DIR ${SFML_CMAKE_DIR})
    	set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${SFML_CMAKE_DIR}")
    endif()
    FIND_PACKAGE(SFML COMPONENTS system window graphics audio REQUIRED)
    INCLUDE_DIRECTORIES(${SFML_INCLUDE_DIR})
    TARGET_LINK_LIBRARIES(${EXE_NAME} ${SFML_LIBRARIES})
     
    FIND_PACKAGE(OpenGL REQUIRED)
    INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
    if(OPENGL_FOUND)
    	TARGET_LINK_LIBRARIES(${EXE_NAME} ${OPENGL_LIBRARIES})
    endif()
    Problème résolu

  4. #4
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut
    Re bonjour,

    J'ai un autre problème avec CMake.
    Impossible de linker GLEW.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FIND_PACKAGE(GLEW REQUIRED)
    INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR})
    if(GLEW_FOUND)
    	TARGET_LINK_LIBRARIES(${EXE_NAME} ${GLEW_LIBRARIES})
    endif()
    Nom : Sans titre.png
Affichages : 1418
Taille : 12,7 Ko

    Je ne comprends pas ce que j'ai pu oublier puisque ce code ci-dessous me permet de linker OpenGL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FIND_PACKAGE(OpenGL REQUIRED)
    INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
    if(OPENGL_FOUND)
    	TARGET_LINK_LIBRARIES(${EXE_NAME} ${OPENGL_LIBRARIES})
    endif()
    Cordialement,
    Robin

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Quel est le soucis, il trouve bien la .lib ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Je vois pas où tu déclares GLEW_LIBRARIES et GLEW_INCLUDE_DIR
    Comprends-tu ce que tu écris ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut
    @LittleWhite : C'est l'include qu'il ne trouve pas. Sur l'image on peut voir que l'include est souligné en rouge. La lib je pense qu'elle est bien linké.

    @Bousk : Je débute avec CMake. Donc je ne pense savoir ce qu'il se passe mais je n'en suis pas sur (la preuve que j'ai tore puisque que ça ne marche pas ^^)
    J'ai rajouté deux lignes de plus mais ça ne change rien.
    Les variable GLEW_LIBRARIES et GLEW_INCLUDE_DIR sont remplis via le logiciel CMake (cf image).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FIND_PACKAGE(GLEW REQUIRED)
    INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR})
    LINK_LIBRARIES(${GLEW_LIBRARIES})
    ADD_DEFINITIONS(${GLEW_DEFINITIONS})
    if(GLEW_FOUND)
    	TARGET_LINK_LIBRARIES(${EXE_NAME} ${GLEW_LIBRARIES})
    endif()

  8. #8
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Je vois pas où tu déclares GLEW_LIBRARIES et GLEW_INCLUDE_DIR
    Comprends-tu ce que tu écris ?
    C'est fait par FIND_PACKAGE(GLEW REQUIRED) ...

    Citation Envoyé par robinsondesbois Voir le message
    Les variable GLEW_LIBRARIES et GLEW_INCLUDE_DIR sont remplis via le logiciel CMake (cf image).
    ... sauf que la variable c'est GLEW_INCLUDE_PATH et pas GLEW_INCLUDE_DIR.

  9. #9
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut
    Comment puis-je donc renseigner GLEW_INCLUDE_DIR ?

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par robinsondesbois Voir le message
    Les variable GLEW_LIBRARIES et GLEW_INCLUDE_DIR sont remplis via le logiciel CMake (cf image).
    Non, ton image indique clairement que GLEW_LIBRARY et GLEW_INCLUDE_PATH existent mais en aucun cas GLEW_LIBRARIES et GLEW_INCLUDE_DIR.

    N'en déplaise au moinseur, ma question est légitime.
    Tu sembles faire du copier/coller "au petit bonheur" de ce qui marche avec OpenGL, mais tu ne tiens pas compte de ce qui est en sorti et te contentes de remplacer OPENGL par GLEW dans les lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FIND_PACKAGE(GLEW REQUIRED)
    INCLUDE_DIRECTORIES(${GLEW_INCLUDE_PATH})
    LINK_LIBRARIES(${GLEW_LIBRARY})
    ADD_DEFINITIONS(${GLEW_DEFINITIONS})
    if(GLEW_FOUND)
    	TARGET_LINK_LIBRARIES(${EXE_NAME} ${GLEW_LIBRARY})
    endif()
    Peut-être ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  11. #11
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut
    Bonjour,

    Merci pour ce code, cela fonctionne parfaitement.
    Effectivement je tâtonne avec CMake et je travail "au petit bonheur le chance" ^^
    Pour moi toutes les bibliothèques se ressemble, de fait leurs code CMake devrais être identique.

    Du coup j'ai quelques questions de plus :
    - Quel est la différence entre GLEW_LIBRARY et GLEW_LIBRARIES (Cela viens du fait qu'il y a qu'un *.lib ? )
    - Quel est la différence entre GLEW_INCLUDE_PATH et GLEW_INCLUDE_DIR.
    - Quel est la méthodologie à appliquer pour être sûr de linker correctement une lib ? (s'il y en a une )
    - Je n'est pas bien compris ce qu'était ADD_DEFINITIONS (d'après mon interprétation de la doc c'est : "ajouter des #define" en gros).

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Je n'ai jamais utilisé CMAKE, je me contente de lire la sortie que tu montres en image
    CMAKE ne fait rien de magique, il s'agit d'un soft qui te crée un makefile
    Citation Envoyé par robinsondesbois Voir le message
    - Quel est la différence entre GLEW_LIBRARY et GLEW_LIBRARIES (Cela viens du fait qu'il y a qu'un *.lib ? )
    L'un existe, l'autre non
    Citation Envoyé par robinsondesbois Voir le message
    - Quel est la différence entre GLEW_INCLUDE_PATH et GLEW_INCLUDE_DIR.
    Idem..
    Citation Envoyé par robinsondesbois Voir le message
    - Quel est la méthodologie à appliquer pour être sûr de linker correctement une lib ? (s'il y en a une )
    Si chaque lib fait sa sauce, à part regarder l'output et Google je vois pas
    Mais bon, ça prend quelques secondes au total et uniquement au début du projet
    Citation Envoyé par robinsondesbois Voir le message
    - Je n'est pas bien compris ce qu'était ADD_DEFINITIONS (d'après mon interprétation de la doc c'est : "ajouter des #define" en gros).
    D'après 5s sur Google, c'est l'équivalent du -Dxxx (un define global)
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  13. #13
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut
    Donc pour résumer chaque lib choisie ses noms de "chemin".
    Comment on peut avoir accès à ses noms (si on n'a pas internet par exemple) ? Comment on peut savoir que pour telle ou telle lib c'est GLEW_INCLUDE_PATH ou GLEW_INCLUDE_DIR ?
    Ok, add_definitions ajoute bien des define.

    EDIT : Vraiment instructif ce thread, merci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/01/2006, 07h37
  2. Réponses: 3
    Dernier message: 12/01/2006, 09h16
  3. [Info]Création d'un projet sous eclipse
    Par new_wave dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 08/01/2006, 22h06
  4. [Lomboz]Création d'un projet J2EE
    Par woodwai dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 03/08/2004, 14h53
  5. Eclipse - problème de création d'un projet Tomcat
    Par firado dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/07/2004, 11h05

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