Makefile et sous dossiers

Makefile et sous dossiers - C - Programmation

Marsh Posté le 20-12-2009 à 18:10:25    

Bonsoir.
 
Voila dans le soucis d'avoir du travail propre, je souhaiterais obtenir une arboresecences de dossier qui ressemble a celle-ci :
 
./
|_Makefile
|_executable
|__src/
|   |__fichiers sources
|_obj/
|   |_fichiers objets
|_inc/
|   |_fichiers include
|_ lib/
     |_fichiers libraries
 
mes fichiers de libraries et d'include sont bien dans un sous dossier, mais je n'arrive pas a creer de makefile convenable pour gerer la presence de sous dossiers contenant les fichiers .c
J ai cree un dossier obj/ Make y met effectivement mes fichiers .o issus de la compil. Probleme : il y met egalement l'executable. et une commande mv dans le makefile ne donne pas de resultat.
 
Voici mon makefile actuel :  
 

Citation :


##
## makefile for my_ls in /home/login/rendubis/c/my_ls
##  
## Made by ****
## Login   ****
##  
## Started on  Fri Dec  4 12:59:21 2009 ****
## Last update Sun Dec 20 17:57:26 2009 ****
##
 
NAME = my_ls
 
SRC = main.c my_ls.c display.c files.c sort.c list.c
OBJ = $(SRC:.c=.o)
CC = cc
CFLAGS = -I inc -W -Wall -ansi -pedantic
RM = rm -f
LIB = -L lib -lpf -lmy
 
all : $(NAME)
 
$(NAME) : $(OBJ)
 $(CC) $(CFLAGS) $(INC) -o $(NAME) $(OBJ) $(LIB)
 
clean :
 $(RM) $(OBJ)
 
fclean : clean
 $(RM) $(NAME)
 
re : fclean all


 
En vous remerciant d'avance de votre aide  :jap:

Reply

Marsh Posté le 20-12-2009 à 18:10:25   

Reply

Marsh Posté le 20-12-2009 à 18:36:01    

Dans le temps je faisais :

 


#-----Macros---------------------------------
CXX = gcc
CXXFLAGS = -O3

 

#-----Final product----------------------
PRODUCT = foobar

 

#-----File Location----------------------

 

SRCDST = src
OBJDST = obj
EXEDST = exe

 

#-----File List----------------------
SRC = $(foreach dir,$(SRCDST),$(wildcard $(dir)/*.c))
OBJ = $(addsuffix .o, $(basename $(subst ${SRCDST},${OBJDST},${SRC})))

 

#-----Base rules---------------------------------
obj/%.o : src/%.c
 $(CXX) $(CXXFLAGS) -c $< -o $@

 

#-----Main rule---------------------------------
all: $(OBJ)
 $(CXX) $(CXXFLAGS) -o ${EXEDST}/${PRODUCT} $(OBJ)

 

#-----Other stuff----------------------------
depend:
 makedepend $(CXXFLAGS) -Y $(SRC)

 

clean:
 rm -f $(OBJ)
 rm -f ${EXEDST}/${PRODUCT}

 

Mais c'est à revoir je pense, je sais pas si foreach_dir n'est une GNU extension de Make


Message édité par Joel F le 20-12-2009 à 18:37:07
Reply

Marsh Posté le 20-12-2009 à 18:59:10    

il me sort un "Error expending embedded variable'

Reply

Marsh Posté le 20-12-2009 à 19:02:29    

quel ligne ?
et quelle versionde make  ?


Message édité par Joel F le 20-12-2009 à 19:02:41
Reply

Marsh Posté le 20-12-2009 à 19:15:12    

Il ne precise pas la ligne. le message d'erreur est le seul output.
 
Pour la version, un echo de $(MAKE_VERSION) me renvoie la valeur 5200408120.
C'est sur du FreeBSD 5.5 et j'ai pas les acces root.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed