来源: ChinaUnix博客
一个多目录结构的C程序Makefile,代码存在main init input output exit目录。
CC = gcc
RDIR = Rels
MAIN_DIR = main/Rels
INIT_DIR = init/Rels
INPUT_DIR = input/Rels
OUTPUT_DIR = output/Rels
EXIT_DIR = exit/Rels
OBJ_FILES = $(MAIN_DIR)/main.o
$(INIT_DIR)/init1.o $(INIT_DIR)/init2.o $(INIT_DIR)/init3.o $(INIT_DIR)/init4.o
$(INPUT_DIR)/input1.o $(INPUT_DIR)/input2.o $(INPUT_DIR)/input3.o $(INPUT_DIR)/input4.o
$(OUTPUT_DIR)/output1.o $(OUTPUT_DIR)/output2.o $(OUTPUT_DIR)/output3.o $(OUTPUT_DIR)/output4.o
$(EXIT_DIR)/exit1.o $(EXIT_DIR)/exit2.o $(EXIT_DIR)/exit3.o $(EXIT_DIR)/exit4.o
#build dest
$(RDIR)/dest : $(RDIR) $(MAIN_DIR) $(INIT_DIR) $(INPUT_DIR) $(OUTPUT_DIR) $(EXIT_DIR) $(OBJ_FILES)
$(CC) $(OBJ_FILES) -o $@
# make directry
$(MAIN_DIR):
mkdir $(MAIN_DIR)
$(RDIR):
mkdir $(RDIR)
$(INIT_DIR):
mkdir $(INIT_DIR)
$(INPUT_DIR):
mkdir $(INPUT_DIR)
$(OUTPUT_DIR):
mkdir $(OUTPUT_DIR)
$(EXIT_DIR):
mkdir $(EXIT_DIR)
#compile object
$(MAIN_DIR)/main.o :main/main.c
$(CC) -c $
#clean all
clean:
rm -r -f $(RDIR)
rm -r -f $(INIT_DIR)
rm -r -f $(INPUT_DIR)
rm -r -f $(OUTPUT_DIR)
rm -r -f $(EXIT_DIR)
本文来自ChinaUnix