есть мейк-файл примерно следующего содержания:
dir1= obj
obj1=$(dir1)/main.o $(dir1)/notmain.o
src1= main.c notmain.c
dir2= sub
obj2=$(dir2)/one.o $(dir2)/two.o
src2=$(dir2)/one.c $(dir2)/two.c
# Rule 1
$(dir1)/%.o: %.c
gcc -c $< -o $@ $(FLAGS1)
# Rule 2
$(dir2)/%.o: %.c
gcc -c $< -o $@ $(FLAGS2)
# было поробовано в виде $(dir2)/%.o: $(dir2)/%.c
# тоже не работает :(
all: $(obj1) $(obj2)
gcc -o result $^
Так вот, проблема заключается в том что второе правило сборки не срабатывает, и объекты из $(obj2) собираются дефолтным правилом сборки... При этом если создать конкретное правило для одного объектника из $(obj2) то оно срабатывает.
P.S. переменные src1, src2 для наглядности.