プロジェクトのmakefileフレームワークを書いています。たとえば、トップディレクトリにmain.cがあり、多くのサブディレクトリにそれぞれCファイルが含まれています。すべてのオブジェクトファイルを一緒にリンクするために、一番上のmakefileに初期値を割り当てます。
export TARGET_LIST := main.o
そして、各サブディレクトリで、それらをリストに追加します。
# sub1/Makefile
TARGET := a.o
TARGET_LIST += $(TARGET)
最上位のディレクトリに戻っても、TARGET_LISTはmain.oのままです。すべてのサブディレクトリが入力されていると確信しています。これを行うための良い方法はありますか?
最上位のmakefile:
all: main
export TOP_DIR = $(shell pwd)
export TARGET_LIST := main.o
SUBDIRS := a b c d
CFLAGS := -Iinc
all:main
main:main.o subdirs
cc $(TARGET_LIST) -o $@ $(CFLAGS)
subdirs: $(patsubst %, _dir_%, $(SUBDIRS))
$(patsubst %, _dir_%, $(SUBDIRS)) :
$(MAKE) -C $(patsubst _dir_%, %, $@) $(TGT)
Rules.make:
all:$(TARGET)
%.o:%.c
@echo $(TARGET_LIST)
$(CC) -c $^ -o $@ $(CFLAGS) $(LDFLAGS)
サブディレクトリmakefile:
TARGET := a.o
TARGET_LIST += $(TARGET)
CFLAGS :=
LDFLAGS :=
include $(TOP_DIR)/Rules.make