:どのようにeval関数をmakefileで使うことができますか?手動で
のeval関数は非常に特別である:それはあなたが一定ではない新しい メイクファイルの構造を定義することができます。これは他の変数と関数を評価する の結果です。 eval 関数への引数が展開され、その展開結果が メイクファイルの構文として解析されます。
eval引数が2回展開されていることを認識することが重要です。最初にeval関数で を実行すると、その展開結果はmakefile構文として解析されたときに再度展開されて になります。これは、 がevalを使用している場合に、 が "$"文字にエスケープのレベルを追加する必要があるかもしれないことを意味します。
「拡張された2倍」は私を混乱させる。例えば、私はメイクファイルを
を作成します。
define func
tmp = $(OBJPATH)/$(strip $1)
objs += $$(tmp)
$$(tmp) : $2
gcc $$^ -o [email protected]
endef
all : foo
$(eval $(call func, foo, 1.c))
eval関数が展開されますか?
"eval関数はどのように拡張されますか?"あなたはそれを試しましたか? – Beta