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 :

[Makefile] projet OpenGL


Sujet :

Systèmes de compilation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut [Makefile] projet OpenGL
    Bonjour,

    Alors voilà j'ai un projet OpenGL qui se structure ainsi :

    src/ => dossier contenant les sources (*.cpp)
    headers/ => dossier contenant les headers (*.hpp)
    bin/ => dossier qui devra contenir l'exécutable
    shaders/ => dossier contenant mes shaders mais ne rentre pas dans la compilation
    glm/ => dossier qui contient la librairie glm (donc un ensemble de fichiers et de dossiers avec des .h, .hpp,.inl etc...), c'est une librairie mathématique pour utiliser des vecteurs, matrice etc... avec la syntaxe de GLSL.
    Voilà la structure, sinon j'utilise SFML pour mon fenêtrage et GLEW donc je devrais dans la compilation stipuler -lsfml-window et -lGLEW.

    J'aimerais savoir comment faire un makefile pour ce genre de structure ou alors comment faire avec un outil comme CMake car je n'arrive pas a comprendre toutes les subtilités (j'ai vu le tuto que je comprends pour un projet qui se trouve à la rigueur dans un seul dossier mais pour une structure comme la mienne je capte pas trop.)

    Merci d'avance.

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Avec CMake, cela donnerait quelque chose du style

    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
    27
    28
    29
    30
     
    project (MyProject CXX)
     
    cmake_minimum_required (VERSION 2.6)
     
    set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
     
    find_package (OpenGL REQUIRED)
    find_package (SFML    REQUIRED COMPONENTS Window)
    find_package (GLEW    REQUIRED)
     
    include_directories (
      headers
      glm
      ${OPENGL_INCLUDE_DIR}
      ${GLEW_INCLUDE_PATH}
      ${SFML_INCLUDE_DIR}
    )
     
    add_executable (myexe
      src/source1.cpp
      ...
      src/sourcen.cpp
    )
     
    target_link_libraries (myexe
      ${OPENGL_LIBRARIES}
      ${GLEW_LIBRARY}
      ${SFML_LIBRARY}
    )
    Avec CMake, on a tendance à ne pas forcer l'endroit de génération du binaire (ton répertoire bin/) mais il existe une variable remplissant ce rôle. Je n'ai plus le nom en tête pour le moment. On a aussi tendance à privilégier l'out-of-source.

    SFML et GLEW ne font pas parties de la distribution standard de CMake. C'est la raison du set (CMAKE_MODULE_PATH ...) qui suppose que tu installes les deux fichiers FindSFML.cmake et FindGLEW.cmake dans un sous-répertoire nommé cmake.

    Tu pourras trouver le fichier FindSFML.cmake à l'adresse suivante au 5ème post. http://www.sfml-dev.org/forum/viewto...05c2658951b29c

    Tu pourras trouver le fichier FindGLEW.cmake ici. http://code.google.com/p/nvidia-text...LEW.cmake?r=96

    N'hésite pas si tu veux plus d'explications...

  3. #3
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    Merci beaucoup pour ta réponse, j'ai testé et un peu modifié et cela fonctionne à merveille.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    cmake_minimum_required(VERSION 2.6)
     
    project(Cube3D)
    set(EXECUTABLE_OUTPUT_PATH bin/)
    set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
     
    find_package (OpenGL REQUIRED)
    find_package (SFML   REQUIRED COMPONENTS Window)
    find_package (GLEW   REQUIRED)
     
    include_directories (
      headers
      glm
      ${OPENGL_INCLUDE_DIR}
      ${GLEW_INCLUDE_PATH}
      ${SFML_INCLUDE_DIR}
    )
     
    file(
      GLOB_RECURSE
      source_files
      ./src/*
    )
     
    add_executable (
      Cube3D
      ${source_files}
    )
     
    target_link_libraries (
      Cube3D
      ${OPENGL_LIBRARIES}
      ${GLEW_LIBRARY}
      ${SFML_LIBRARY}
    )

Discussions similaires

  1. idée de projet OpenGL / réseau
    Par ivles dans le forum Sujets
    Réponses: 0
    Dernier message: 19/01/2009, 19h33
  2. Réponses: 2
    Dernier message: 20/10/2007, 17h51
  3. makefile prog opengl
    Par michael84 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/05/2007, 13h08
  4. Projet OpenGl sous visual - Quel type de projet?
    Par starkson dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/02/2007, 13h07
  5. Outils pour projet openGL
    Par rad_hass dans le forum OpenGL
    Réponses: 2
    Dernier message: 05/02/2006, 12h00

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