私は多くの繰り返しのものを含む 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 は、引数に基づいて上記のコードを実行する関数である可能性があります。どうすればこれを達成できるか誰にもわかりませんか?