1
我已經測試項目文件夾結構視圖:功能在Makefile中定義
TOPDIR
├── a
│ └── a.c
├── b
│ └── b.c
├── c
│ └── c.c
└── makefile
我寫了一個測試生成文件:在make期間
CC := gcc
LD := ld
MAKE_DIR = $(PWD)
MODULES := a b c
SRC_DIR := $(addprefix ${MAKE_DIR}/,$(MODULES))
SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.c))
OBJ := $(patsubst %.c,%.o,$(SRC))
INCLUDES := $(addprefix -I,$(SRC_DIR))
vpath %.c $(SRC_DIR)
define make-goal
$1/%.o: %.c
$(CC) $(INCLUDES) -c $$< -o [email protected]
endef
all:
$(foreach sdir,$(SRC_DIR),$(eval $(call make-goal,$(sdir))))
,它只是停止,並顯示:
makefile:37: *** prerequisites cannot be defined in command scripts. Stop.
37行是:
$(foreach sdir,$(SRC_DIR),$(eval $(call make-goal,$(sdir))))
我的makefile有什麼問題?
非常感謝你幫助,我忘了把'$(OBJ)'放在'target'後面,你能幫我解決另一個問題嗎? http://stackoverflow.com/questions/21305590/patsubst-did-not-translate-c-to-o –