- 论坛徽章:
- 0
|
这两天琢磨想自动生成一个makefile,我用了SED个命令(琢磨了两天啊)替换换行哪儿,我单独执行可以看到想要的结果,但是放在makefile中$s/\n//的\n被当成了2个字符而不是一个换行,在makefile中怎么表示换行呢?
ifndef CFG
CFG := debug
else
ifneq ($(CFG), release)
CFG := debug
endif
endif
ifeq ($(CFG), debug)
DBGFLAGS := -g
DBGMFLAGS := -DDEBUG
else
DBGFLAGS :=
DBGMFLAGS := -DNDEBUG
endif
CC = armcc
ASM = armasm
LD = armlink
AR = armar
ARCH = -cpu ARM7TDMI
COMMONDIR = ../../common
TXDIR = $(COMMONDIR)/threadx
INCLUDES = -I$(TXDIR)
ASFLAGS = -keep $(DBGFLAGS) $(ARCH)
CFLAGS = -c $(DBGFLAGS) $(ARCH)
LDFLAGS = -info totals -elf -d -Remove -map -symbols
OBJDIR = $(CFG)/obj
TXCSRC = $(wildcard $(TXDIR)/*.c)
TXSSRC = $(wildcard $(TXDIR)/*.s)
TXOBJS = $(patsubst %.c, $(OBJDIR)/%.o, $(notdir $(TXCSRC)))
TXLIB = $(OBJDIR)/tx.lib
ALL:HEAD $(TXOBJS)
@echo #
HEAD:
@echo ALL=$(TXLIB)
@echo.
@echo $(TXLIB) (TXOBJS)
@echo $(AR) -create $(TXLIB) $(TXOBJS)
@echo.
$(OBJDIR)/%.o: $(TXDIR)/%.c
@$(CC) -M $(DBGMFLAGS) $(CFLAGS) $(INCLUDES) $< -o $@ > $@.d
@sed -n 's:\:/:g;1!s/^.*://;H;$$g;$$s/\n//g;$$p' $@.d
@rm $@.d
@echo $(CC) $(DBGMFLAGS) $(CFLAGS) $(INCLUDES) $< -o $@
@echo. |
|