#makefile
#makefile
Вопрос:
У меня есть набор исходных файлов, которые используют один и тот же шаблон правил Makefile:
bin1: bin1.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
bin2: bin2.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
bin3: bin3.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
...
Теперь, как я могу реорганизовать это, чтобы избежать повторения одного и того же правила снова и снова? Это легко, если к двоичным файлам добавлено расширение файла:
%.out: %.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
Но возможно ли сделать то же самое без его использования?
Комментарии:
1. Вы сказали, что это легко, если добавить расширение файла , затем спросили , можно ли сделать то же самое без его использования . Почему бы вам просто не создать makefile с использованием шаблонного правила без использования расширения и посмотреть, работает ли это? Это заняло бы меньше времени, чем потребовалось для написания этого вопроса SO (подсказка: да, это сработает).
Ответ №1:
Вы можете использовать статические правила шаблонов:
bin1 bin2 bin3: %: %.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
Таким образом, это чище, и вы уверены, что %
единственное совпадение bin1
bin2
и bin3
цели (я думаю, это то, что вы хотите).