Makefile 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. .PHONY: all clean cleanall
  2. CC = gcc
  3. #定义头文件路径
  4. MYFLAGS= -I../include -I../paho.mqtt.c/src/
  5. #定义编译选项,包括头文件路径、优化级别、调试信息、警告等。
  6. CFLAGS = $(MYFLAGS) -Os -g -Wall -W -Wpointer-arith -DPAHO_MQTT_EXPORTS=1 -c
  7. #定义生成共享库的编译选项。
  8. SFLAGS = -fPIC -Os -g -Wall -W -Wpointer-arith -shared -D_GNU_SOURCE -DPAHO_MQTT_EXPORTS=1 -o
  9. # 定义目标文件列表,这些目标文件最终会被合并为静态库和共享库。
  10. OBJS = core.o regfunc.o mqtta.o cmd.o cJSON.o myqueue.o list.o
  11. #定义最后生成的静态库、共享库文件
  12. LIB_A=libcore.a
  13. LIB_SO=libcore.so
  14. #MQTT 相关文件
  15. MQTT_LIB = paho-mqtt3a.so
  16. MQTT_LIB_PATH = ../mqttlib/
  17. AR= ar rcu
  18. RANLIB= ranlib
  19. #默认目标是生成共享库 libcore.so
  20. all: $(LIB_SO)
  21. #生成静态库 libcore.a 的规则。依赖于目标文件 $(OBJS)。
  22. $(LIB_A):$(OBJS)
  23. $(AR) $@ $(OBJS)
  24. $(RANLIB) $@
  25. @echo -e "\\033[32m $(LIB_A) is OK \\033[0m"
  26. # 生成共享库 libcore.so 的规则。依赖于当前目录下的所有 .c 和 .h 文件。
  27. $(LIB_SO): $(wildcard *.c) $(wildcard *.h)
  28. $(CC) -fPIC $(CFLAGS) core.c
  29. $(CC) -fPIC $(CFLAGS) mqtta.c
  30. $(CC) -fPIC $(CFLAGS) regfunc.c
  31. $(CC) -fPIC $(CFLAGS) cmd.c
  32. $(CC) -fPIC $(CFLAGS) cJSON.c
  33. $(CC) -fPIC $(CFLAGS) myqueue.c
  34. $(CC) -fPIC $(CFLAGS) list.c
  35. $(CC) $(MYFLAGS) $(SFLAGS) $@ $(OBJS)
  36. @echo -e "\\033[32m $(LIB_SO) is OK \\033[0m"
  37. core.o: core.c core.h
  38. @$(CC) $(MYFLAGS) $(CFLAGS) $<
  39. mqtta.o: mqtta.c mqtta.h
  40. @$(CC) $(MYFLAGS) $(CFLAGS) $<
  41. regfunc.o:regfunc.c regfunc.h handle.c
  42. @$(CC) $(MYFLAGS) $(CFLAGS) $<
  43. cmd.o:cmd.c cmd.h
  44. @$(CC) $(MYFLAGS) $(CFLAGS) $<
  45. cJSON.o:cJSON.c cJSON.h
  46. @$(CC) $(MYFLAGS) $(CFLAGS) $<
  47. myqueue.o:myqueue.c myqueue.h
  48. @$(CC) $(MYFLAGS) $(CFLAGS) $<
  49. list.o:list.c list.h
  50. @$(CC) $(MYFLAGS) $(CFLAGS) $<
  51. clean:
  52. -rm -rf $(OBJS) $(LIB_A) $(LIB_SO)