У меня есть Makefile, который похож на эту сокращенную версию:
.PHONY: all
CC = gcc -O3 -fPIC
SRC = $(shell find src -type f -name '*.c')
OBJ = $(addprefix build/, $(notdir $(SRC:.c=.o))
TGT = build/prog
all: $(TGT)
$(TGT): $(OBJ)
$(CC) $+ -o $@
build/%.o: src/a/%.c
$(CC) -c $+ -o $@
build/%.o: src/b/%.c
$(CC) -c $+ -o $@
build/%.o: src/c/d/%.c
$(CC) -c $+ -o $@
Я хотел бы объединить правила build/%.o
в одно правило, потому что настоящий make-файл имеет около двадцати из них для различных путей в каталог src
. Но что бы я ни пытался, ничего не работает. Я уверен, что должно быть решение, пожалуйста, просветите меня, как это можно сделать.