У меня есть проект c ++ с различными расширениями для исходных файлов (.cpp, .c, .cc) и различными расширениями для заголовочных файлов (.hpp, .h, .hh). Исходные файлы находятся в каталоге с именем SRC, а заголовочные файлы, как и ожидалось, находятся в каталоге с именем INC.
Я бы хотел скомпилировать исходники с правилом вроде
vpath %.c $(SRC)
%.o: %.c
$(COMPILER) $(FLAGS) $< $(INCFLAG)$(INC)
Это, конечно, работает, если я знаю, что исходный файл будет иметь форму% .c, но в случае нескольких возможных расширений файлов мне нужно будет создать аналогичное правило для% .cpp и% .cc. , Конечно, написать три правила не составляет особого труда, но было бы неплохо иметь возможность использовать этот make-файл в качестве перетаскивания для любого проекта, даже на другом языке, без необходимости переписывать правила.
Так, как я могу написать правило (или некоторую другую конструкцию, которая выполняет ту же самую цель), которая работает как:
SRC_EXT = cpp c cc
vpath %.$(SRC_EXT) $(SRC)
%.o: %.$(SRC_EXT)
$(COMPILER) $(FLAGS) $< $(INCFLAG)$(INC)
Спасибо за вашу помощь.