码迷,mamicode.com
首页 > 其他好文 > 详细

3536 makefile

时间:2019-05-15 14:11:36      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:depends   执行   ref   目录   修改   定义   $@   lag   clean   

#------------------------------------------------------------------------------
#
# 通用定义
#
#------------------------------------------------------------------------------
#CROSS_COMPILE = arm-hisiv300-linux-//根据具体编译器修改
AS        = $(CROSS_COMPILE)as
LD        = $(CROSS_COMPILE)ld -shared -o
CC        = $(CROSS_COMPILE)gcc
CP        = $(CC) -E
AR        = $(CROSS_COMPILE)ar rc
NM        = $(CROSS_COMPILE)nm
STRIP    = $(CROSS_COMPILE)strip
RM        = rm -f

#------------------------------------------------------------------------------
#
# 目录定义
#
#------------------------------------------------------------------------------
SRC_DIR:=./src
OBJ_PATH:=./obj
INCL_DIR:=./include

#------------------------------------------------------------------------------
#
# 编译参数 定义
#
#------------------------------------------------------------------------------
CFLAGS := -fPIC -g
CFLAGS += -Wall
CFLAGS += $(foreach dir,$(INCL_DIR),-I$(dir))
CFLAGS += -DDEBUG

#------------------------------------------------------------------------------
#
# 待编译文件整理
#
#------------------------------------------------------------------------------
SRCS:=$(wildcard $(SRC_DIR)/*.c $(SRC_DIR)/gsoap/*.c $(SRC_DIR)/onvif/*.c)
OBJS:=$(addsuffix .o, $(addprefix $(OBJ_PATH)/,$(basename $(notdir $(SRCS)))))
DEPENDS:=$(patsubst %.o,%.d,$(OBJS))

#------------------------------------------------------------------------------
#
# 编译目标定义
#
#------------------------------------------------------------------------------
PROG             := onvifdemo
LIBA            := libonvif.a

#------------------------------------------------------------------------------
#
#
# 伪目标定义
#
#------------------------------------------------------------------------------
.PHONY: all liba bin clean

all:liba bin

#------------------------------------------------------------------------------
#
#
# 库文件生成规则
#
#------------------------------------------------------------------------------
liba:$(LIBA)

$(LIBA):$(OBJS)
    $(AR) $(LIBA) $(OBJS)

#------------------------------------------------------------------------------
#
#
 可执行文件生成规则
#
#------------------------------------------------------------------------------
bin:$(PROG)

$(PROG):$(LIBA)
    $(CC) $(CFLAGS) -c demo.c -o $(OBJ_PATH)/demo.o
    $(CC) -o $(PROG) $(OBJ_PATH)/demo.o $(LIBA)
    $(STRIP) $(PROG)
    
#------------------------------------------------------------------------------
#
# 目标清除规则
#
#------------------------------------------------------------------------------
clean:
    $(RM) obj/* $(LIBA) $(PROG)

#------------------------------------------------------------------------------
#
# 中间文件生成规则
#
#------------------------------------------------------------------------------

#---定义函数,将已知 .c 文件名转换为相应的 .o文件名,统一输出到obj目录下
define src_to_obj=
    $(addsuffix .o,$(addprefix $(OBJ_PATH)/,$(basename $(notdir $(1)))))
endef
#---定义函数,将 .c 文件编译成相应的 .o 文件
define compileobj=
$$(call src_to_obj,$(1)):$(1)
    $$(info ---------COMPILE $(1)-------------------)
    $$(CC) $$(CFLAGS) -MMD -MT $$@ -MF $$(patsubst %.o,%.d,$$@) -c $$< -o $$@
endef
#---循环遍历所有.c文件,编译成.o 文件
$(foreach afile,$(SRCS),$(eval $(call compileobj,$(afile))))

#------------------------------------------------------------------------------

-include $(DEPENDS)

3536 makefile

标签:depends   执行   ref   目录   修改   定义   $@   lag   clean   

原文地址:https://www.cnblogs.com/cumtchw/p/10869014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!