一、编写
如果在同一路径编写多个makefile的话,只需要修改文件的后缀名为mak,文件名自己定
二、使用makefile
make -f xxx.mak
三、示例
1、编写代码
2、编写makefile
#build tools
SHELL = /bin/sh
CC = gcc
AR = ar
VERSION = V1.0
#target
LIB_TARGET = mqtt_fun
#add define
DEBUG = -DMQTTCLIENT_PLATFORM_HEADER=MQTTLinux.h
#add build options
CFLAGS += -w -lpthread -lm
#add include files path
INCLUES += -I ../../src/linux
INCLUES += -I ../../../MQTTPacket/src
INCLUES += -I ../../src
#add src files path
VPATH += ../../src/linux
VPATH += ../../../MQTTPacket/src
#add lib files path
#LIBS +=
#LIB_PATH += -L .
#obj files
OBJS = MQTTClient.o mqtt_top.o mqtt_scheduler.o cJSON.o mqtt_fun_alarm.o mqtt_fun_device_status.o mqtt_fun_device_tag.o mqtt_fun_log.o mqtt_fun_ota.o mqtt_fun_set_para.o mqtt_fun_vpn.o mqtt_interface.o MQTTLinux.o MQTTFormat.o MQTTPacket.o MQTTDeserializePublish.o MQTTConnectClient.o MQTTSubscribeClient.o MQTTSerializePublish.o MQTTConnectServer.o MQTTSubscribeServer.o MQTTUnsubscribeServer.o MQTTUnsubscribeClient.o
#build rules
$(LIB_TARGET):$(OBJS)
cp ../../src/MQTTClient.c .
sed -e 's/""/"MQTTLinux.h"/g' ../../src/MQTTClient.h > MQTTClient.h
$(CC) $(INCLUES) $^ main.c -o $@ $(CFLAGS) $(DEBUG)
%.o:%.c
$(CC) $(INCLUES) -c $^ -o $@ $(CFLAGS) $(DEBUG)
clean:
rm -rf mqtt_fun.a *.o
echo "rm -rf mqtt_fun.a *.o"
3、使用