Как избежать повторяющихся неявных правил в Makefile? - PullRequest
1 голос
/ 13 января 2012

Я работаю над программным обеспечением для автоматической генерации Makefile ( CodeMate ), и я хотел бы знать, могу ли я избежать написания неявных правил для разных файлов, но с такими же операциями, как:

%.o: %.F90
    @echo " Creating dependency $@"
    @echo $(seperator)
    @$(FORTRAN_COMPILER) -c $< $(OPTION) $(FORTRAN_FLAGS) $(INCLUDES)
%.o: %.f90
    @echo " Creating dependency $@"
    @echo $(seperator)
    @$(FORTRAN_COMPILER) -c $< $(OPTION) $(FORTRAN_FLAGS) $(INCLUDES)
%.o: %.F
    @echo " Creating dependency $@"
    @echo $(seperator)
    @$(FORTRAN_COMPILER) -c $< $(OPTION) $(FORTRAN_FLAGS) $(INCLUDES)
%.o: %.f
    @echo " Creating dependency $@"
    @echo $(seperator)
    @$(FORTRAN_COMPILER) -c $< $(OPTION) $(FORTRAN_FLAGS) $(INCLUDES)

Это может хорошо работать, но немного уродливо.

Спасибо!

1 Ответ

1 голос
/ 13 января 2012

(не проверено:)

define f_rule
%.o: %.$(1)
    @echo " Creating dependency $$@"
    @echo $(seperator)
    @$(FORTRAN_COMPILER) -c $$< $(OPTION) $(FORTRAN_FLAGS) $(INCLUDES)
endef

F_EXTENSIONS := F90 f90 F f
$(foreach ext, $(F_EXTENSIONS), $(eval $(call f_rule,$(ext))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...