Так как файлы * .o, * .h и * .c хранятся в разных каталогах, мне нужно добавлять префикс $ (ODIR) или $ (IDIR) каждый раз, когда я пишу a * .o или * .h файл?makefile содержит * .h файл в другом каталоге
Есть ли изящный способ сделать это?
Возможно, что-то вроде $ (IDIR)/{a.h, b.h, c.h}?
Это образец Makefile:
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 [email protected] $+
$(ODIR)/keyword_match_test.o : keyword_match_test.c $(IDIR)/keyword_match.h
$(GCC) $(CFLAGS_DEBUG) -c -o [email protected] $< -I$(IDIR)
$(ODIR)/keyword_match.o : $(SDIR)/keyword_match.c $(IDIR)/keyword_match.h $(IDIR)/global.h
$(GCC) $(CFLAGS_DEBUG) -c -o [email protected] $< -I/usr/include/mysql -I$(IDIR)
http://mad-scientist.net/make/rules.html#rule3 – eriktous