Problème avec Makefile + SDL en C
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Problème avec Makefile + SDL en C



  1. #1
    invite45ca6d89

    Problème avec Makefile + SDL en C


    ------

    Bonjour à tous,

    j'ai un petit problème avec la création de mon makefile pour un projet d'informatique.

    Voilà la structure de dossiers de mon projet (PS : je suis sous linux )
    Code:
    - Projet
                ./bin/*.o
                ./src/*.c et *.h
                Makefile
    J'ai un main.c qui inclut ces fichiers :

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <dirent.h>
    #include "SDL/SDL.h"
    #include "string.h"
    #include "julia.h"
    #include "mandelbrot.h"
    un julia.c et mandelbrot.c avec :

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include "SDL/SDL.h"
    #include "julia.h"
    lorsque chacun de ces fichiers contenaient la fonction main, pour compiler il suffisait d'exécuter la commande suivante:
    Code:
    gcc -c julia.c -o julia `sdl-config -libs --ccflags`
    et ça marchait ! mais quand j'essaye de l'intégrer à un makefile, ça ne marche pas, et il "plante" au niveau du SDL étant donné qu'il relève des erreurs du type : "undefined reference to `SDL_Init` etc...

    voilà le Makefile :

    Code:
    # Création de l'exécutable 'Fractales'
    
    all: create main.o julia.o mandelbrot.o
    	gcc ./bin/*.o -o Fractales
    
    # Création du dossier bin (à condition que ce dernier n'existe pas déjà)
    
    create:
    	mkdir -p bin
    
    
    ############ Compilation de l'ensemble des fichiers ############
    main.o: ./src/main.c
    	gcc -c ./src/main.c -o ./bin/main.o
    
    julia.o: ./src/julia.c
    	gcc -c ./src/julia.c  -o ./bin/julia.o `sdl-config -libs --cflags`
    
    mandelbrot.o: ./src/mandelbrot.c
    	gcc -c ./src/mandelbrot.c -o ./bin/mandelbrot.o `sdl-config -libs --cflags`
    
    # Suppression des fichiers temporaires
    clean:
    	rm -rf ./bin/*.o
    
    # Suppression de tous les fichiers, sauf les sources,
    # en vue d'une reconstruction complète
    very-clean: clean
    	rm -rf bin
    	rm -rf Fractales

    merci d'avance pour votre aide

    Wims

    -----

  2. #2
    invite4492c379

    Re : Problème avec Makefile + SDL en C

    Hello dans la règle all tu linkes tout sauf les libs SDL


    gcc ./bin/*.o -o Fractales `sdl-config -libs`

  3. #3
    invite45ca6d89

    Re : Problème avec Makefile + SDL en C

    Désolé de ne répondre que maintenant, je consultait le mauvais mail pour voir s'il y avait eu une réponse !

    En tout cas merci beaucoup pour ta réponse ! ça marche

    Par contre je me demandais pourquoi il était nécessaire de le rajouter pour la commande all alors qu'il est déjà accompagné pour les fichiers qui le demandent ... ? Enfin vous voyez ce que je veux dire ?

    Encore merci (d'ailleurs s'il y a des remarques vis à vis de mon makefile, je suis preneur, même si c'est pour me dire qu'il est nul à chier)

    Wims

  4. #4
    invite4492c379

    Re : Problème avec Makefile + SDL en C

    En fait c'est très simple (et généralisable sur tous les pkg-config et autres xxxx-config).

    Quand tu compiles pour obtenir un fichier objet, le compilateur n'a besoin que des paramètres pour trouver les includes, les libs ils s'en fout, il n'en a pas besoin, par contre il lui faut les CFLAGS. Conclusion : quand tu crées un .o utilise uniquement `sdl-config --cflags`.
    Par contre quand tu crées l'exécutable il lui faut les chemins vers les librairies et les librairies, et ça c'est `sdl-config --libs` qui le renvoie.

    Ton makefile est tout à fait honnête, il fonctionne. Pas la peine de le compliquer outre mesure pour un projet de cette ampleur ... pas la peine d'être multiplateforme ou à l'épreuve d'environnements non conventionnels.
    Je ne sais pas quel IDE tu utilises, mais sous linux Anjuta est pas mal ... tu as un plugin pour le dev avec SDL qui te génère l'architecture à la GNU.

    Bon courage

  5. A voir en vidéo sur Futura
  6. #5
    invite45ca6d89

    Re : Problème avec Makefile + SDL en C

    Super merci de tes réponses très claires photon57

    Etant donné que mon projet risque d'être plus gros, je pense que je vais devoir faire des changements avec le temps.

    Encore merci pour ton aide

Discussions similaires

  1. Programme en C avec SDL plante très souvent !
    Par AmigaOS dans le forum Programmation et langages, Algorithmique
    Réponses: 20
    Dernier message: 16/10/2011, 18h54
  2. Structurer un programme en C avec SDL
    Par AmigaOS dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 02/03/2011, 19h59
  3. Sdl
    Par invite7f58f807 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 26/12/2010, 20h13
  4. un jeu de carte avec SDL
    Par invitee2f3230c dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 11/06/2009, 15h19
  5. Programmation C sous Windows XP : debugger, Makefile
    Par invitec392daab dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 30/01/2006, 10h46