Я пишу Makefile с большим количеством повторяющихся вещей, например.
debug_ifort_Linux:
if [ $(UNAME) = Linux ]; then \
$(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..." \
[email protected] LEXT="ifort_$(UNAME)" -e syst; \
else \
echo $(err_arch); \
exit 1; \
fi
где определена целевая "syst", определена переменная "UNAME" (и обычно это Linux, но может также быть Cygwin или OSF1), а также определены "difort" и "err_arch" переменных. Этот блок кода используется очень много раз для разных целей компилятора (с использованием соглашения об именах ''). Поскольку это огромное количество избыточного кода, я хотел бы написать его более простым способом. Например, я хотел бы сделать что-то вроде этого:
debug_ifort_Linux:
compile(uname,compiler,flags,petsc_flags,target,lext)
где компиляция может быть функцией, выполняющей код выше на основе аргументов. Кто-нибудь знает, как я мог это сделать?