From a3bf8e4f4c8bb023b1b7dfb8f125140345a23a04 Mon Sep 17 00:00:00 2001 From: M.Gergő Date: Tue, 26 May 2020 19:37:44 +0200 Subject: Improved makefile --- makefile | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/makefile b/makefile index e9d38df..ce9b67e 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,4 @@ -.PHONY: all clean install copylib ldconf lib debug distclean +.PHONY: all clean test testlib install copylib ldconf lib debug distclean # buid & link with gcc CC = gcc @@ -19,54 +19,57 @@ LDLIBS = BINDIR = bin LIBDIR = libdir OBJDIR = build +SRCDIR = src # .o fájlok -OBJ = main.o ini_read.o ini_write.o PROG = $(BINDIR)/lightconfini -LIB = $(LIBDIR)/liblightconfini.so.1.0.1 -lib: OBJ := $(filter-out main.o, $(OBJ)) +#OBJ = main.o ini_read.o ini_write.o +OBJ = $(patsubst $(SRCDIR)/%.c, %.o, $(wildcard $(SRCDIR)/*.c)) OBJS = $(addprefix $(OBJDIR)/,$(OBJ)) - +lib: OBJS = $(addprefix $(OBJDIR)/, $(filter-out main.o, $(OBJ)) ) +lib: PROG = $(LIBDIR)/liblightconfini.so.1.0.1 +# Egyik targetben beállított változó nem érvényes a másik targetben! # ALL kell legyen legelőször! # Az sem mindegy, hogy mellette van, vagy alatta egy sorral! -all: $(PROG) -lib: clean $(LIB) -debug: clean all +all: lib +test: $(PROG) +lib: $(PROG) +debug: clean $(PROG) install: lib copylib -testlib: clean all +testlib: lib ldconf clean + $(CC) $(CFLAGS) -o $(OBJDIR)/main.o $(SRCDIR)/main.c + $(LD) $(LDFLAGS) $(OBJDIR)/main.o -o $(PROG) $(LDLIBS) # debug-hoz felüldefiniálva -debug: CFLAGS = -Wall -c -g -g3 -ggdb -std=c89 -Wpedantic -Wmissing-prototypes -debug: LDFLAGS = +debug: CFLAGS = -Wall -c -g -g3 -ggdb -std=c89 -Wpedantic -Wmissing-prototypes debug: LDLIBS = -lefence # make lib FLAGS: not link: -c, relative addresses: -fPIC lib: CFLAGS = -fPIC -c -Wall lib: LDFLAGS = -shared -Wl,-soname,liblightconfini.so.1 lib: LDLIBS = -lc # nem mindegy, hogy mellette van, vagy alatta egy sorral! +testlib: LDFLAGS = -ldl -rdynamic + + # Ha még nem létezik az obj könyvtár, létrehozza $(OBJS): | $(OBJDIR) -$(PROG): | $(BINDIR) -$(LIB): | $(LIBDIR) +$(PROG): | $(BINDIR) +$(PROG): | $(LIBDIR) # Fordított sorrend: először a főprogram $(PROG): $(OBJS) - $(LD) $(LDFLAGS) -o $(PROG) $(OBJS) $(LDLIBS) - @echo ' ' - -# For shared library -$(LIB): $(OBJS) - $(LD) $(LDFLAGS) $(OBJS) -o $(LIB) $(LDLIBS) + $(LD) $(LDFLAGS) $(OBJS) -o $(PROG) $(LDLIBS) @echo ' ' # Utána: A forrásfájlok fordítása egyesével -$(OBJS): $(OBJDIR)/%.o: ./src/%.c +$(OBJS): $(OBJDIR)/%.o: $(SRCDIR)/%.c $(CC) $(CFLAGS) -o "$@" "$<" + # OBJ létrehozáshoz $(BINDIR): $(MKD) $(BINDIR) -- cgit v1.2.3