Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60141
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-24 12:34
文章分类
文章存档

2019年(3)

2018年(8)

我的朋友

分类: LINUX

2018-11-27 14:42:15

#
# 实现要点: (1) cmd_cc_c_o 使能使用 '=' 定义
#                (2) 所有的.PHONY 目标需要使用 PHONY 变量同步定义

CC := gcc


Q               = @


# quiet := quiet_
# quiet := silent_


comma   := ,
quote   := "
squote  := '
empty   :=
space   := $(empty) $(empty)
pound := \#


escsq = $(subst $(squote),'\$(squote)',$1)


echo-cmd = $(if $($(quiet)cmd_$(1)),echo '  $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)
cmd = $(Q)$(echo-cmd) $(cmd_$(1))


any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)


echo-why = $(call escsq,$(why))
# (1) PHONY
# (2) target is missing
# (3) something is newer than target
ifneq "$(quiet)" ""
why = $(if $(filter $@,$(PHONY)),       - due to phony target,                                          \
                                        $(if $(wildcard $@),                                                                        \
                                                        $(if $(strip $(any-prereq)), - due to $(any-prereq),    \
                                                                - due to unknown),                                                  \
                                                                - due to target is missing)                                         \
                        )
endif


            cmd_cc_c_o = $(CC) $(c_flags) -c $< -o $@
quiet_cmd_cc_c_o = CC $<
                        cmd_ld_o_elf   = $(CC) $(ld_flags) -o $@ $^
quiet_cmd_ld_o_elf   = LD $@


%.o: %.c
        $(call cmd,cc_c_o)




srctree = /path/to/strtree




addtree = $(if $(patsubst -I%,%,$(1)), \
$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))


CFLAGS = $(call addtree,-Idebug)
CFLAGS = $(call addtree,-Idebug)


.PHONY: all
PHONY += all


%.o: c_flags = $(CFLAGS)
all: ld_flags = $(CFLAGS)




all: all.o
        $(call cmd,ld_o_elf)
        @# rm -f *.o


clean:
        @rm -f all *.o


.PHONY: clean
PHONY += clean

阅读(3299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~