Ich schreibe ein Makefile mit einer Menge sich wiederholender Dinge, z.B.
debug_ifort_Linux:
if [ $(UNAME) = Linux ]; then \
$(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..." \
TARGET=$@ LEXT="ifort_$(UNAME)" -e syst; \
else \
echo $(err_arch); \
exit 1; \
fi
wobei das Ziel "syst" definiert ist, die Variable "UNAME" definiert ist (und normalerweise Linux ist, aber auch Cygwin oder OSF1 sein kann) und die Variablen "difort" und "err_arch" ebenfalls definiert sind. Dieser Code-Block wird sehr oft für verschiedene Compiler-Ziele verwendet (unter Verwendung der Namenskonvention ' '). Da dies eine riesige Menge an überflüssigem Code ist, würde ich ihn gerne auf eine einfachere Weise schreiben können. Ich würde z. B. gerne so etwas wie das hier tun:
debug_ifort_Linux:
compile(uname,compiler,flags,petsc_flags,target,lext)
wobei compile eine Funktion sein könnte, die den obigen Code auf der Grundlage der Argumente ausführt. Hat jemand eine Idee, wie ich dies erreichen könnte?