2

Есть файлы lab1.с, lab2.с, …, labN.c. Нужно написать правило в Makefile, которое бы компилировало каждый файл, т. е. что-то типа:

for (i = 1; i < N; i++):
   labi.o : labi.c
     g++ -c labi.c

Подскажите, как написать это в Makefile.

eanmos
  • 6,651

2 Answers2

2

Если вам нужно из каждого файла исходного кода скомпилировать соответствующий объектный файл:

lab1.c -> lab1.o
lab2.c -> lab2.o
      ....
labN.c -> labN.o

то можно воспользоваться pattern rules:

%.o : %.c
    $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

Можно сделать еще короче, использовав implicit rules:

%.o : %.c
eanmos
  • 6,651
1

Используйте обобщённый знак *:

labi.o: lab*.c
   g++ -c $?
edem
  • 5,970