makefile example

#通用 make file

OS_NAME = $(shell uname -s)

##一、指定常用系统命令
AR := ar            
SED:= sed          
AWK:= awk
MV := mv
RM := rm -f
ECHO := echo

##二、C编译器选项
#指定编译器
CC := gcc
#指定编译器选项
CFLAGS := -c -g -W -Wall
#CFLAGS := -c -g
#指定C于编译器
CPP :=
#指定C于编译器选项
CPPFLAGS :=


##三、指定额外搜索的头文件路径、库文件路径 、引入的库
# The include files ( C and C++ common).
#INCLUDES := -I./inc -I/usr/local/include -I/usr/local/include/linphone -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include
INCLUDES := -I./inc -I/usr/local/include -I/usr/local/include/linphone -I/usr/include/dbus-1.0 -I/usr/lib/i386-linux-gnu/dbus-1.0/include
# 指定函数库搜索路径
LIBDIRS := -L/usr/local/lib -L./lib
# 链接器参数
CLDFLAGS := -llinphone -lmediastreamer_base -lmediastreamer_voip -lortp -lpthread -lrt -lasound -lm -ldbus-1 -lsdkapi
#宏定义
DCPPFLAGS := -D${OS_NAME}


#四、指定源文件的路径 、支持的源文件的扩展名 、源文件搜索路径
#指定源文件的路径
SRC_DIR := ./src
#支持的源文件的扩展名
SFIX := .c
VPATH := ${SRC_DIR}


#五、得到源文件名称集合、OBJS目标文件名集合
#得到源文件集合(带路径)
SOURCES := $(foreach x,${SRC_DIR}, $(wildcard  $(addprefix  ${x}/*, ${SFIX})))
#去掉路径信息,去掉扩展名,再追加.o的扩展名,得到目标文件名集合(不带路径)
OBJS := $(addsuffix .o ,$(basename $(notdir ${SOURCES})))    


#六、定义生成程序的名称
TARGET := gateway_voip


#七、 定义依赖关系 ,编译、链接规则
.PHONY : all clean

#定义编译、链接任务all
all : ${TARGET}
#链接
${TARGET} : ${OBJS}
# echo ${OBJS}
 ${CC} -o $@ ${OBJS} ${LIBDIRS} ${CLDFLAGS}
 
${OBJS}:%.o:%.c
# echo $<
 ${CC} ${CFLAGS} $< -o $@ ${INCLUDES}
# Rules for producing the objects. (.o) BEGIN
#%.o : %.c
# ${CC} ${DCPPFLAGS} ${CFLAGS} ${INCLUDES} $<


#定义清理的任务,rm命令前面加了一个小减号的意思就是, 也许某些文件出现问题,但不要管,继续做后面的事
clean:
 -${RM} *.o ${TARGET}


转载于:https://my.oschina.net/jisywh/blog/537252

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值