この種の構造を持つメイクファイルのセクションがあります。
bob:
ifdef DEBUG
@echo running
endif
@echo chug chug chug
ifdef DEBUG
@echo done
endif
bobit:
@echo "before"
@make bob
@echo "after"
ここでは非常に単純化しています。すべてのエコーは実際には重要なコマンドのブロックであり、さらに条件付きのものがありますが、これは私の問題の本質を捉えています。
技術的な理由から、今は入りたくないので、そのサブメイクを取り除く必要がありますが、echo は重要な量のコードを表しているため、bob の本体を単にコピーして貼り付けたくはありません。サブメイク。
理想的には、私がやりたいことはこのようなものです
define BOB_BODY
ifdef DEBUG
@echo running
endif
@echo chug chug chug
ifdef DEBUG
@echo done
endif
endef
bob:
$(BOB_BODY)
bobit:
@echo "before"
$(BOB_BODY)
@echo "after"
残念ながら、条件は私を悩ませているようで、「ifdef: コマンドが見つかりません」というエラーが発生します。eval と call のさまざまな組み合わせでこれを回避しようとしましたが、それを機能させる方法を見つけられないようです。
どうすればこれを機能させることができますか? そして、それは問題にアプローチする正しい方法でさえありますか?