我正在编写一个包含很多重复内容的 Makefile,例如
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
在定义目标“syst”的地方,定义了变量“UNAME”(通常是 Linux,但也可能是 Cygwin 或 OSF1),还定义了变量“difort”和“err_arch”。这段代码被多次用于不同的编译器目标(使用命名约定 '')。由于这是大量的冗余代码,我希望能够以更简单的方式编写它。例如,我想做这样的事情:
debug_ifort_Linux:
compile(uname,compiler,flags,petsc_flags,target,lext)
其中 compile 可以是根据参数执行上述代码的函数。有谁知道我怎么能做到这一点?