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 maître et makefile


Sujet :

Systèmes de compilation

  1. #1
    Membre du Club
    Homme Profil pro
    Agronome
    Inscrit en
    Septembre 2018
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Agronome
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2018
    Messages : 97
    Points : 60
    Points
    60
    Par défaut makefile maître et makefile
    Ce n'est peut être pas le bon forum pour l'outil make mais bon puisque j'écrit en C. En plus quand je vois ce qu'il a offrir, je me dit qu'il aurait bien une place à part sur le site.

    Bref, j'ai makefile principale (maître) dont voici la source qui m'as inspiré : https://gl.developpez.com/tutoriel/outil/makefile/
    Code makefile : 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
    #makefile maitre
    export CC=gcc
    export CFLAGS = -std=c99 -lglut -lGL -lGLU -lpng -Wall -g
    #export LDFLAGS=
    #export INCLUDES=
    #export DEFINE = -DTCP_DELAY_BIND_ALL
    GAME_DIR=game
    EXEC=$(GAME_DIR)/GAME
     
    #default: $(EXEC)
    #all: default 
     
    all: $(EXEC)
     
    $(EXEC):
    	@(cd $(GAME_DIR) && $(MAKE))
    	#@(cd $(????_DIR) && $(MAKE))
     
    .PHONY: clean mrproper $(EXEC)
     
    clean:
    	@(cd $(GAME_DIR) && $(MAKE) $@)
    	#@(cd $(????_DIR) && $(MAKE) $@)
     
    zip :
    	zip Jacquets_JumpingBanana.zip *.c *.h makefile makefile2 images/*/* data/*

    Ensuite dans un dossier game, j'ai un fichier game.c et game.h et le makefile suivant :
    Code makefile : 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
    #sous makefile
    EXEC = jb
    SRC= $(wildcard *.c)
    OBJ= $(SRC:.c=.o)
     
    #default: $(EXEC)
    #all: default
     
    all: $(EXEC)
     
    game: $(OBJ)
    	@$(CC) -o $@ $^ $(LDFLAGS)
    	#$(CC) $(CFLAGS) -c $< -o $@
     
    %.o: %.c
    	@$(CC) -o $@ -c $< $(CFLAGS) $(INCLUDES)
     
    .PRECIOUS: $(TARGET) $(OBJECTS)
     
    $(EXEC) : $(OBJ)
    	$(CC) -o $(EXEC) $(OBJ) $(CFLAGS)
     
    .PHONY: clean mrproper
     
    clean:
    	@rm -rf *.o
    	@rm -rf $(EXEC)

    Actuellement mon makefile ne retrouve pas ma main dans le dossier PARENT, voici le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    make[1]*: on entre dans le répertoire «*/home/sam/Bureau/jumpingbanana/ProjetBanana/Game (copie)/outilMake/game*»
    gcc -o jb game.o -std=c99 -lglut -lGL -lGLU -lpng -Wall -g
    /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o*: Dans la fonction «*_start*»*:
    (.text+0x20)*: référence indéfinie vers «*main*»
    collect2: error: ld returned 1 exit status
    makefile:21: recipe for target 'jb' failed
    make[1]: *** [jb] Error 1
    make[1]*: on quitte le répertoire «*/home/sam/Bureau/jumpingbanana/ProjetBanana/Game (copie)/outilMake/game*»
    makefile:16: recipe for target 'game/GAME' failed
    make: *** [game/GAME] Error 2

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 694
    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 694
    Points : 30 992
    Points
    30 992
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Magnum8760 Voir le message
    Ce n'est peut être pas le bon forum pour l'outil make
    https://www.developpez.net/forums/f2...s-compilation/

    Citation Envoyé par Magnum8760 Voir le message
    je me dit qu'il aurait bien une place à part sur le site.
    Ben voilà, c'est le cas.

    Citation Envoyé par Magnum8760 Voir le message
    Actuellement mon makefile ne retrouve pas ma main dans le dossier PARENT
    Et ça t'inspirerait pas de nous dire où se trouve ce main ??? Ouais t'as raison, quand c'est trop simple on s'ennuie un peu.
    En tout cas dans ton makefile du dossier "game" tu as la règle
    Code makefile : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    game: $(OBJ)
    	@$(CC) -o $@ $^ $(LDFLAGS)
    Ça demande donc à créer l'exécutable à partir du source ".c". Il n'y a aucune raison qu'il aille chercher le main ailleurs. Et personnellement je ne ferais pas ça dans le sens "je compile dans le sous-dossier et tente d'aller chercher le main dans le parent" mais "je compile là où il y a le main (donc je pense dans le parent) et s'il manque des trucs je vais les chercher dans des compilations enfant déportées".

    Citation Envoyé par Magnum8760 Voir le message
    dont voici la source qui m'as inspiré
    Ne t'inspire pas d'un truc ou un autre, inspire toi de ta propre façon de faire; Comment ferais-tu à la main pour compiler ton projet ? Ensuite décompose les étapes et reproduis-les via des règles de dépendances inscrites dans les divers Makefile. Et toujours dans le sens "là où il y a le main et ensuite en allant compiler les .o manquants si besoin"...
    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]

Discussions similaires

  1. Makefile et sed
    Par pitistef dans le forum Systèmes de compilation
    Réponses: 7
    Dernier message: 10/02/2004, 15h06
  2. [Makefile] [Avancé]Récupération de dépendances
    Par Ruok dans le forum Systèmes de compilation
    Réponses: 4
    Dernier message: 06/02/2004, 12h52
  3. [Debutant] Makefile
    Par Jfrancois57 dans le forum Systèmes de compilation
    Réponses: 8
    Dernier message: 26/01/2004, 13h18
  4. Makefile
    Par Wisefool dans le forum Systèmes de compilation
    Réponses: 2
    Dernier message: 03/11/2003, 17h41
  5. Compilation avec un Makefile
    Par Mau dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 28/02/2003, 11h30

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