3536 makefile
Posted cumtchw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3536 makefile相关的知识,希望对你有一定的参考价值。
#------------------------------------------------------------------------------
#
# 通用定义
#
#------------------------------------------------------------------------------
#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 [email protected] -MF $$(patsubst %.o,%.d,[email protected]) -c $$< -o [email protected]
endef
#---循环遍历所有.c文件,编译成.o 文件
$(foreach afile,$(SRCS),$(eval $(call compileobj,$(afile))))
#------------------------------------------------------------------------------
-include $(DEPENDS)
以上是关于3536 makefile的主要内容,如果未能解决你的问题,请参考以下文章
MakefileMakefile 中 LINUXINCLUDE 的作用
MakefileMakefile 中 LINUXINCLUDE 的作用