У меня есть следующий make-файл:
CC=gcc
CFLAGS= ---
LDFLAGS = ---
all: abc_test
abc_test: abc_test.o defn_abc.o abc.o cmocka_compass.o
$(CC) $(LDFLAGS) abc_test.o defn_abc.o abc.o cmocka_compass.o -o
abc_test
abc_test.o : abc_test.c
$(CC) $(CFLAGS) abc_test.c
defn_abc.o : ../defn_abc.c
$(CC) $(CFLAGS) ../defn_abc.c
abc.o : ../abc.c
$(CC) $(CFLAGS) ../abc.c
knownfile.o : ../../../../../knownpath.c
$(CC) $(CFLAGS) ../../../../../knownpath.c
clean:
rm *o *.log abc_test
, который будет работать (изменил имена некоторых файлов), но я хочу сделать его универсальным.Я попробовал следующее, но продолжаю получать сообщения об ошибках, так как нет целей.
CC=gcc
CFLAGS= ---
LDFLAGS = ---
SRCFILES := $(shell find ../ -name '*.c')
OBJFILES := $(patsubst %.c,%.o,%(SRCFILES))
OBJFILES: all
all: $(OBJFILES)
%.o: %.c
$(CC) $(CFLAGS) %< -o %@
knownfile.o : knownpath.c
$(CC) $(CFLAGS) knownpath.c
файл make является тестовой папкой, которая содержит весь тестовый код (abs_test.c).Это также, где все объекты должны идти.Один каталог содержит файлы c defn_abc.c и abc.c.
Есть идеи, что я делаю неправильно?
ОБНОВЛЕНИЕ: Вот мой последний make-файл с ошибкой 'отсутствует разделитель'
CC=gcc
CFLAGS=-c -Wall -DUNIT_TESTING -DSYS_LINUX -Ipath1 -Ipath2
LDFLAGS = -Wl,---
SRCFILES := $(shell find ../ -name '*.c')
OBJFILES := $(patsubst %.c,%.o,$(SRCFILES))
all: $(PROG)
$(PROG): $(OBJFILES)
$(CC) $(CFLAGS) $(OBJFILES) -o $@ $(LDFLAGS)
all: $(OBJFILES)
%.o: %.c
$(CC) $(CFLAGS) %< -o %@
knownfile.o : knownpath.c
$(CC) $(CFLAGS) knownfile.c