- 论坛徽章:
- 0
|
#转换所有.c成为目标目录文件
define C2O
$(addprefix $(2)/,\
$(subst ../,dotdot/,\
$(patsubst %$(3),%$(4),\
$(patsubst $(PROJ_DIR)%,PROJ_DIR%,\
$(filter %$(3),$(1)))))))
endef
OBJ_DEBUG_C := $(call C2O,$(SRCS_Debug),$(OBJDIR_Debug),.c,.d)
test : $(OBJ_DEBUG_C)
gcc -o test $(OBJ_DEBUG_C)
#编译所有的.c
$(OBJDIR_Debug)/PROJ_DIR/dotdot/Drv/Boot/%.o: $(PROJ_DIR)/../Drv/Boot/%.c
$(BUILD_Debug_c
结果是:没有编译任何一个.o文件。
代码没有贴全。但应该够了。
问题出在那个 宏定义上。
如果不用宏定义。改成
C2O = $(addprefix $(OBJDIR_Debug)/,$(subst ../,dotdot/,$(patsubst %.c,%.o,$(patsubst $(PROJ_DIR)%,PROJ_DIR%,$(filter %.c,$(SRCS_Debug))))))
OBJ_DEBUG_C := $(C2O)
就可以了。
请教为什么?我的make是3.81 |
|