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 :

Makefile headers et dépendances


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 41
    Par défaut Makefile headers et dépendances
    Bonsoir,

    J'ai (enfin) un makefile qui fait ce que je veux, mais comme je ne maitrise par très bien le sujet, pouvez-vous me relire et m'indiquer mes erreurs ?


    Mes erreurs certaines, que j'aimerais solutionner avec vous, sont :

    1. L'endroit où je crée les dépendances est différent des exemples que j'ai pu trouver sur le net, mais je n'y arrive pas si je crée une règle '%d:%c' ou équivalent.

    2. Compiler et générer les dépendances en une seule ligne.
    Actuellement si je tente de le faire, j'obtiens bien un fichier de dépendances, et le fichier objet est créé, mais vide.


    Je suis structuré ainsi en répertoires :

    TEST (fichier makefile ici)
    |-- src (fichiers .c et.h)
    |-- obj (fichiers .o et .d)
    |-- bin (fichier .so final)


    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
    50
    51
    52
    HIDE	= @
    NAME	= Test
    BINEXT	= .so
    SRCDIR	= ./src/
    OBJDIR	= ./obj/
    BINDIR	= ./bin/
     
    DEBUG	= -D_DEBUG			# DEBUG= 		 : remove debug.c in compilation
    ifeq ("$(DEBUG)","")		# DEBUG=-D_DEBUG : add debug.c in compilation
    EXCLUDE	= $(SRCDIR)debug
    MODE="NOT "
    endif
     
    CC		= /usr/local/cross/gcc-3.3.4_glibc-2.3.2/arm-linux/bin/gcc
    CFLAGS	= -std=c99 -W -Wall -O2 -fPIC -pedantic -finline-functions -Os
    LDFLAGS	= -ldl -fvisibility=hidden -shared -lm
    LINKER	= -Wl,--version-script=$(NAME)_so.map
     
    SRCS	= $(filter-out $(EXCLUDE).c,$(wildcard $(SRCDIR)*.c))
    SRCS_H	= $(filter-out $(EXCLUDE).h,$(wildcard $(SRCDIR)*.h))
    OBJS	= $(addprefix $(OBJDIR),$(notdir $(SRCS:.c=.o)))
    BIN		= $(addprefix $(BINDIR), $(NAME)$(BINEXT))
    DEPS	= $(OBJS:.o=.d)
     
    .PHONY: clean, install
     
    all: pre-build main-build
     
    pre-build:
    	$(HIDE)echo "==== DEBUG in source code is $(MODE)included ====" 
     
    main-build:
    	$(HIDE)echo "==== sources compilation beginning... ===="
    	$(HIDE)$(MAKE) --no-print-directory $(BIN)
     
    $(BIN): $(OBJS)
    	$(HIDE)echo "==== linking ... ====="
    	$(HIDE)mkdir -p $(BINDIR)
    	$(HIDE)$(CC) $(LDFLAGS) $(OBJS) -o $(BIN) $(LINKER)
     
    -include $(DEPS)
     
    $(OBJDIR)%.o: $(SRCDIR)%.c $(SRCDIR)%.h
    	$(HIDE)mkdir -p $(OBJDIR)
    	$(HIDE)echo "---- generating dependency $(OBJDIR)$*.d"
    #	$(HIDE)$(CC) -MM -MF $(OBJDIR)$*.d -MT $(<F:.c=.o) -MT $(OBJDIR)$*.d $(CFLAGS) $<
    	$(HIDE)$(CC) $(CFLAGS) -MM -MF $(patsubst %.o,%.d,$@) -MT $(OBJDIR)$*.o $<
    	$(HIDE)echo "---- compilating object file $@"
    	$(HIDE)$(CC) $(CFLAGS) -c $< -o $@ $(DEBUG)
     
    clean:
    	$(HIDE)$(RM) $(EXEC) $(OBJDIR)*.* $(DEPS)
    Merci pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 41
    Par défaut
    Bonjour,

    Personne ne veut se lancer à commenter mon makefile ?

    Toute remarque est constructive, il n'y a jamais de risque à faire un échange constructif !!

    En vous espérant donc.
    Merci.

Discussions similaires

  1. G++ et makefile, problème de dépendances
    Par mister3957 dans le forum C++
    Réponses: 4
    Dernier message: 17/11/2013, 18h56
  2. [Makefile] Problème de dépendance
    Par Invité dans le forum Linux
    Réponses: 4
    Dernier message: 29/03/2012, 03h55
  3. makefile, cible et dépendance
    Par IceFinger dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 07/07/2010, 15h06
  4. Réponses: 1
    Dernier message: 26/07/2009, 18h06
  5. Makefile / Liste des dépendances
    Par Gigo dans le forum Systèmes de compilation
    Réponses: 6
    Dernier message: 06/08/2007, 20h44

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