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 :

[Make] Problème(s) de dépendances non locales


Sujet :

Systèmes de compilation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par défaut [Make] Problème(s) de dépendances non locales
    Bonjour à tous,

    Je me suis récemment mis aux makfile avec plus ou moins de succès et j'arrive sur un point que je n'arrive pas à solutionner.

    Tout d'abord je vais vous présenter l'archi de mes sources.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Root
    |
    |---BuilDir
    |
    |---Projects
    |              |
    |             ---Gnu     [ Makefile Makefile.in Makfile.out)]
    |---Src
             |---Rep1
                         |
                         |---srcs1 [ Makefile (2)]
                         |---srcs2 [ Makefile (3)]
                         |---srcs3 [ Makefile (4)]
    Dans le répertoire gnu il y à donc:
    Un make file "maitre" qui permet de builder le projet complet,
    makefile.in liste les répertoire utilisés et makefile.out liste les régles génériques

    Dans Root/Src/rep1/srcs*:
    Il y à un make file pour compiler les sources du répertoire en question, chacun des make file des répertoires src* inclus makefile.in et makefile.out pour être générique au maximum.


    Mon problèmes est le suivant, je souhaite que les make files des répertoires root/srcs/rep1/srcs* places les *.o générés dans buildDir le makefile de chacun des répertoires à donc cette tête

    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
     
    BASE_DIR=../../..
     
    include $(BASE_DIR)/projects/gnu/Makefile.in
     
    SRCS = $(wildcard *.c)
    OBJS = $(addprefix $(BUILDDIR),$(patsubst %.c,%.o,$(SRCS)))
     
    CFLAGS=\
    		$(INCLUDES)
     
    all: depend	$(OBJS)
     
    include $(BASE_DIR)/projects/gnu/Makefile.out
     
    ifneq "$(MAKECMDGOALS)" "clean" 
    	-include $(DEPEND_FILE)
    endif
    La cible all dépend des *.o du répertoire de build, si on regarde makfile.out

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    depend:$(DEPEND_FILE)
     
    $(DEPEND_FILE):
    	@echo "--> Generating dependences"
    	@$(MAKEDEPEND) -f- -- $(CFLAGS) -- $(SRCS)  -p$(BUILDDIR) > $(DEPEND_FILE) 2>/dev/null
     
    $(BUILDDIR)/%.o : %.c
    	@echo "--> Compiling $<"
    	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ -c $<
     
    clean:
    	$(RM) $(BUILDDIR)
    Le fichier de dépendances .depend créé des dépendances entre les *.o du répertoire de build et les différents fichier liéés aux *.o

    Le problèmes est que lorsque je lance make, les dépendances sont bien générée mais juste ensuite make me dit "make: Rien à faire pour « all »."

    En lançant make -d je vois des traces ou make réalise qu'il faut reconstruire les cibles *.o mais il ne semble pas utiliser la règles du makefile.out pour construire la cible...

    J'avoue être un peu perdu la :s, si quelqu'un voit mon erreur qu'il n'hésite surtout pas ^

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par défaut
    Humm si j'enlève le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ifneq "$(MAKECMDGOALS)" "clean" 
    	-include $(DEPEND_FILE)
    endif
    En fin du make file dans les dossiers root/srcs/rep1/src* make ne trouve pas de règles pour faire mes *.o

    Je vais creuser makefile.out du coup...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par défaut
    J'ai du neuf,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ../../../bin/linux/i686/%.o : %.c
    	@echo "--> Compiling $<"
    	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ -c $<
    Fonctionne, alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $(BINDIR)/%.o : %.c
    	$(MAKE_BIN_DIR_EXISTS)
    	@echo "--> Compiling $<"
    	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ -c $<
    Ne fonctionne pas, biens sur BINDIR=../../../bin/linux/i686 :s
    Il est interdit d'utiliser des variables dans le nom des cibles ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/05/2015, 22h04
  2. [EasyPHP] EasyPHP 1.8 ... problème avec les pages en local !
    Par Franck.H dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 06/04/2007, 14h12
  3. Connection non local
    Par smtjv dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/12/2005, 14h24
  4. [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
  5. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17

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