52 Stimmen

Funktionen im Makefile

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X