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 :

Problème bibliothèque graphique + Makefile en C


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2018
    Messages : 6
    Par défaut Problème bibliothèque graphique + Makefile en C
    Bonjour, je suis nouveau sur ce forum, et je voudrais vous partager un problème que je n'arrive pas à résoudre.

    Je suis actuellement en DUT Informatique, et j'ai comme projet de faire un SNAKE en C. J'ai donc fais un programme "launcher" qui correspond au menu pour choisir les différents menus : "options" / "jeu" / "quitter".

    Pour relier ces programmes, je dois donc faire un Makefile, puis le lancer avec la commande Make.

    Le seul problème, c'est que pour compiler mon programme, j'utilise une bibliothèque graphique fournie par mon IUT avec laquelle je dois rajouter un -lgraph pour pouvoir compiler avec les bonnes "références".

    Je pense que j'ai oublié de mettre le -lgraph dans mon programme Makefile, mais le problème c'est que je ne sais pas où je dois le mettre. J'ai déjà essayé à plusieurs endroits mais cela ne marche pas.

    Si vous avez besoin d'informations supplémentaires par rapport à mes programmes, n'hésitez pas à me demander !
    Quelqu'un saurait m'aider ?

    Merci d'avance et bonne soirée à vous.
    Louis.

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Nous aurions besoin a minima du listing du makefile ainsi que de la liste des fichiers qui composent la source du programme. Des informations supplémentaires comme la nature des plate-formes de compilation et cible sont rarement superflues également.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2018
    Messages : 6
    Par défaut
    D'accord je vous dis tout ce que j'ai :
    Premièrement je fais ça sous Ubuntu via le logiciel Sublime Text.
    Ensuite je n'ai pas vraiment bien compris comment ça marchais alors je me suis inspiré d'exemples.

    (Si vous voulez je peux aussi vous envoyer le code ? Je suis nouveau et je ne sais vraiment pas tout ce qu'il vous faut pour m'aider ^^).

    Je possède comme fichiers :
    - launcher.c (Le programme de base qui affiche l'interface et qui gère la liaison avec les autres programmes).
    - jeu.c (Le jeu à lancer si je clique sur "jouer" via le launcher.c)
    - option.c (Menu des options).
    - launcher.o et launcher.h
    - jeu.h et jeu.o
    - option.h et option.o
    - Le Makefile

    Voilà mon Makefile (Il doit très certainement ne pas être hyper correct, mais la seule erreur que j'ai proviens de la bibliothèque graphique) :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    # Makefile pour le Snake
     
    # CHAPITRE 1 : BUT FINAL
     
    but : startgame
     
    # CHAPITRE 2 : VARIABLES
     
    OFILES = jeu.o \
             option.o \
             launcher.o
     
    CC = gcc
     
    CFLAGS = -Wall -ansi -pedantic -g
     
    SRC= jeu.c launcher.c option.c
     
    OBJ= $(SRC:.c=.o)
     
    # CHAPITRE 3 : DEPENDANCES
     
    startgame : jeu.o option.o launcher.o
     
    jeu.o : jeu.h
     
    option.o : option.h
     
    launcher.o : jeu.h option.h
     
    #CHAPITRE 4 : DEPENDANCES AVEC COMMANDES
     
    jeu.o : jeu.c jeu.h
            $(CC) $(CFLAGS) -c jeu.c
     
    option.o : option.c option.h
            $(CC) $(CFLAGS) -c option.c
     
    startgame : $(OFILES)
            $(CC) $(CFLAGS) -o startgame $(OFILES)
     
    #CHAPITRE 5 : NETTOYAGE DES FICHIERS GENERES
     
    clean :
            -rm -f $(OFILES) startgame
     
    #CHAPITRE 6 : BUTS FACTICES
     
    .PHONY : but clean
    Si il vous faut encore des infos comme d'autres codes n'hésitez pas, je ne sais vraiment pas quoi vous fournir

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 232
    Par défaut
    Essayes d'ajouter :
    vers la ligne 20 de ton makefile.

    Après je suis pas un expert des makefiles.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Le lien avec les librairies se fait à la génération de l'exécutable. Donc sur la règle startgame : $(OFILES).
    Si on rajoute la ligne LIBS = -lgraph mentionnée par chrtophe, alors la règle peut être réécrite ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    startgame : $(OFILES)
            $(CC) $(CFLAGS) $(OFILES) $(LIBS) -o startgame
    Et sinon je pense que le chapitre 3 "dépendances" est inutile vu que les dépendances sont écrites dans les règles du chapitre 4.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Attention à bien ajouter les bibliothèques à la suite des fichiers objets.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2018
    Messages : 6
    Par défaut
    Super merci beaucoup cela fonctionne parfaitement !

    Je vous remercie !!!

    Bonne soirée à vous et merci encore !

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 232
    Par défaut
    @Sver: Ajouter LIBS = -lgraph suffit donc pas. Est-ce bien cela ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    @Sver: Ajouter LIBS = -lgraph suffit donc pas. Est-ce bien cela ?
    C'est cela. En écrivant LIBS = -lgraph tu ne fais que créer une variable nommée "LIBS". Tout comme il crée une variable "CC" quand il écrit CC = gcc. Mais cette variable ne sert que si on s'en sert
    Le principe du Makefile est le suivant: je définis une règle indiquant comment créer "truc" quand on a "chose". Cela se fait via la ligne truc : chose. Et sur la ou les lignes du dessous, je donne les commandes permettant de créer réellement "truc". Ces lignes doivent impérativement être tabulées pour que make sache ce qui est quoi.
    Et dans tout ça, les variables permettent de factoriser les éléments communs. Si par exemple tu as un Makefile plus complexe qui gère 4 ou 5 exécutables différents, les règles seront plus ou moins les mêmes. Ce sera toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    exec1 : source1
    	compilation source1 + inclusion librairiesX librairiesY
     
    exec2 : source2
    	compilation source2 + inclusion librairiesX librairiesY
     
    exec3 : source3
    	compilation source3 + inclusion librairiesX librairiesY
    Ces librairies étant les mêmes, si tu les mets dans une variable ça te simplifiera la vie (surtout le jour où tu rajoutes "librairieZ").
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Je vais pas faire avancer le smilblick, je vais plutôt jeter un pavé dans la marre avant de partir en weekend

    Un étudiant en 2018 / 2019 devrait utiliser CMake au lieu d'écrire ses Makefiles à la main

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 232
    Par défaut
    Je suis d'accord, et moi qui code peu, ça m'a vraiment simplifié la vie.

    C'est bien aussi d'apprendre à le faire à la main, mais avec les IDE, les outils comme CMake, c'est pas non plus obligatoire.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

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

Discussions similaires

  1. Problème compilation bibliothèque graphique
    Par akrogames dans le forum C++
    Réponses: 5
    Dernier message: 09/03/2007, 13h00
  2. problème carte graphique NVIDIA
    Par reboots dans le forum Windows XP
    Réponses: 12
    Dernier message: 12/10/2005, 16h28
  3. [MAKE] problème export sur makefile recursif
    Par tomasha dans le forum Systèmes de compilation
    Réponses: 2
    Dernier message: 07/10/2005, 19h08
  4. problème avec graphique dans état access
    Par petitmic dans le forum Access
    Réponses: 5
    Dernier message: 07/09/2005, 14h55

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