プロジェクトのルートディレクトリにメインのmakefileがあります。includeディレクトリ内に別のmakefileがあります。2番目のmakefileは、includeキーワードを使用して、私が制御できない他のプロジェクトの他のmakefileを呼び出します。私が持っているものと同じ名前のターゲットがいくつかあるため、このmakefileを直接含めることはできません。回避策として、再帰呼び出しを使用することにしました。次のコマンドを使用して、このmakefileをシェルで実行すると、うまく機能します。
my_project$ make -C include -f Second_Makefile
しかし、メインのMakefileを介して次のように呼び出すと、通常は動作しません。つまり、2番目のmakefile内に含まれているファイルに起因する、見つけるのが非常に難しいプロジェクト固有のエラーが報告されます。
all:
@$(MAKE) -C include -f Second_Makefile
次の行も試しましたが、役に立ちませんでした。
cd include; @$(MAKE) -f Second_Makefile
再帰呼び出しと直接呼び出しには違いがあるはずですが、それが何なのかわかりません。