Поскольку файлы * .o, * .h и * .c хранятся в разных каталогах, нужно ли добавлять префикс $ (ODIR) или $ (IDIR) каждый раз, когда я пишу файл * .o или * .h
Есть ли изящный способ сделать это?
Возможно, что-то вроде $ (IDIR) / {a.h, b.h, c.h}?
Это образец make-файла:
GCC = gcc
CFLAGS =
CFLAGS_DEBUG_STRICT = -Wall pedantic -ansi -ggdb -DDEBUG
CFLAGS_DEBUG = -Wall -ggdb -DDEBUG
LFLAGS =
SDIR = ../src
ODIR = obj
IDIR = ../include
INCLUDES =
LIDR = ../lib/
LIBS =
all : keyword_match_test
keyword_match_test : $(ODIR)/keyword_match_test.o $(ODIR)/keyword_match.o
$(GCC) $(CFLAGS_DEBUG) -o $@ $+
$(ODIR)/keyword_match_test.o : keyword_match_test.c $(IDIR)/keyword_match.h
$(GCC) $(CFLAGS_DEBUG) -c -o $@ $< -I$(IDIR)
$(ODIR)/keyword_match.o : $(SDIR)/keyword_match.c $(IDIR)/keyword_match.h $(IDIR)/global.h
$(GCC) $(CFLAGS_DEBUG) -c -o $@ $< -I/usr/include/mysql -I$(IDIR)