我有 2 个文件夹及其子文件夹 04-Software Components / 03-Specific_sources 和 08-Ext_Proj / SWC_ADC, SWC_PWM / 03-SRC
在 03-Specific_sources 中有一些 .c 和 .h 文件,在 SWC_ADC / 03-SRC(即 ADC.c)和 SWC_PWM / 03-SRC(即 PWM. C)
我想编译它们并将它们全部链接以获得输出文件。所以我所做的是:
EXEDIR_RELEASE := ../01-EXE\02-Release
OBJDIR_RELEASE := ../05-Obj\02-Release
SRCDIR := ../../../03-Specific_sources (This is the path from my make folder)
EXT_DIR := ../../08-Ext_Proj (This is the path from my make folder)
FIND_SRCS := $(wildcard $(EXT_DIR)/SWC_*/03-SRC/*.c)
INCLUDES := -I $(SRCDIR) $(foreach ext, $(wildcard $(EXT_DIR)/SWC*), -I $(ext)/03-SRC)
CSRCS := $(wildcard $(SRCDIR)/*.c) $(FIND_SRCS)
CSRCS := $(notdir $(CSRCS))
CROBJS := $(patsubst %.c, %.r34, $(CSRCS))
CROBJS := $(addprefix $(OBJDIR_RELEASE)/, $(CROBJS))
.PHONY: all
all: $(EXEDIR_RELEASE)/$(TARGET_RELEASE)
# Compiling
$(OBJDIR_RELEASE)/%.r34: $(FIND_SRCS)
@echo '$^ $@'
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $<
# Linking
$(EXEDIR_RELEASE)/Target.mot: $(CROBJS)
$(LD) $(MFLAGS) # These are the linker and its flags
问题是编译不起作用。所以当我做回声时,我得到了这个:
ADC_prg.c PWM_prg.c DDF_prg.r34
ADC_prg.c PWM_prg.c DFAN_prg.r34
ADC_prg.c PWM_prg.c DFN_prg.r34
ADC_prg.c PWM_prg.c DIO_prg.r34
ADC_prg.c PWM_prg.c DMIO_prg.r34
所以我认为数学模式 %.r34 不起作用,当我使用
($(OBJDIR_RELEASE)/%.r34: $(FIND_SRCS)/%.c) 它也不起作用,因为我不能将 %
与变量一起使用对其执行通配符功能。
我也使用了 foreach 函数,但没有用。
所以,我需要你们的帮助,我今天有交货......请尽快回复。
在此先感谢 SAM