非再帰的な make ビルド システムを作成しようとしています。
私が達成しようとしているのは、各メイクファイルが独自の変数を定義し、システム内で彼が唯一のものであるように「感じる」ことです。
例:
プロジェクト レイアウト:
-Makefile
-src1
----Makefile
----example1.c
-src2
----Makfile
----example2.c
メインの Makefile は次のようになります:
include src1/Makefile
include src2/Makefile
all: $(TARGETS)
src1/src2 の各 makefile は次のようになります:
SRC:=...
OBJ:=...
TARGETS+=bin1 #in src2 its bin2
bin1: $(OBJ)
----gcc ....
$(OBJ_DIR)/ %.o : $(SRC_DIR)/%.c
----gcc ....
しかし、ターゲット内のレシピの評価が延期されるため、この設計パターンは機能しません。
これは、src1 内の同じ名前を持つすべての変数が src2 変数の値を取得することを意味します (最後の代入)。インクルードを $(eval include ...) に置き換えようとしましたが、うまくいきませんでした。
すべての変数の割り当ては := で行われることに注意してください。
各メイクファイルで必要なものを定義したり、各変数を一意にする方法はありますか?
ありがとう、タル