linux通用makefile文件

  1 OUTPUT_DLL := libmy.so
  2 LIBS :=-L../public/lib/x64/linux -lzookeeper_mt  -lcurl \
  3         -lfreetype -lopencv_core -lopencv_highgui -lopencv_imgproc \
  4         -lsqlite3 -locilib \
  5         -L../public/lib/x64/linux/librdkafka-V0.11.0 -lrdkafka \
  6         -L../public/lib/x64/linux/pqxx -lpqxx -lpq \
  7 
  8 #if make x64 or x32 YES or NO
  9 MAKE64 := YES
 10 
 11 #base
 12 CC      := gcc 
 13 CXX     := g++ 
 14 LD      := g++ 
 15 SHELL := /bin/sh
 16 
 17 #path
 18 ifeq (YES, $(MAKE64))
 19     BIN_DIR := ../bin/x64/linux/
 20     OBJ_DIR := ../obj/x64/linux/
 21 else
 22     BIN_DIR := ../bin/x86/linux/
 23     OBJ_DIR := ../obj/x86/linux/
 24 endif
 25 
 26 #compile all .c .cpp files found in src dir
 27 SRCS := $(wildcard *.c) $(wildcard *.cpp)\
 28     $(wildcard ./database/*.c) $(wildcard ./database/*.cpp)\
 29     $(wildcard ./kafka/*.c) $(wildcard ./kafka/*.cpp)\
 30     $(wildcard ./ws/bigdata/*.c) $(wildcard ./ws/bigdata/*.cpp)\
 31     $(wildcard ./ws/env/*.c) $(wildcard ./ws/env/*.cpp)\
 32     $(wildcard ./ws/*.c) $(wildcard ./ws/*.cpp)\
 33 
 34 OBJS := $(addsuffix .o,$(basename $(SRCS)))
 35 VPATH := $(OBJ_DIR)
 36 
 37 #include path
 38 INCLUDE_BASE := ../public/include
 39 INCLUDE += $(INCLUDE_BASE):\
 40         $(INCLUDE_BASE)/my:\
 41         $(INCLUDE_BASE)/my1:\
 42         $(INCLUDE_BASE)/curl:\
 43         $(INCLUDE_BASE)/my3:\
 44         $(INCLUDE_BASE)/freetype:\
 45         $(INCLUDE_BASE)/opencv:\
 46         $(INCLUDE_BASE)/librdkafka-V0.11.0:\
 47         $(INCLUDE_BASE)/ocilib:\
 48         $(INCLUDE_BASE)/pqxx/linux:\
 49         ./database:\
 50         ./HTTPPlugin:\
 51         ./ws:\
 52         
 53 #if debug
 54 DEBUG          := YES
 55 PROFILE        := NO
 56 
 57 DEBUG_CFLAGS     := -Wall -Wno-format -g -fvisibility=hidden
 58 RELEASE_CFLAGS   := -Wall -Wno-unknown-pragmas -Wno-format -O3 -D_CONSOLE -fvisibility=hidden
 59 DEBUG_CXXFLAGS   := $(DEBUG_CFLAGS) 
 60 RELEASE_CXXFLAGS := $(RELEASE_CFLAGS)
 61 DEBUG_LDFLAGS    := -g -Wl,-rpath=./
 62 RELEASE_LDFLAGS  := -Wl,-rpath=./
 63 
 64 ifeq (YES, $(DEBUG))
 65    CFLAGS       := $(DEBUG_CFLAGS)
 66    CXXFLAGS     := $(DEBUG_CXXFLAGS)
 67    LDFLAGS      := $(DEBUG_LDFLAGS)
 68 else
 69    CFLAGS       := $(RELEASE_CFLAGS)
 70    CXXFLAGS     := $(RELEASE_CXXFLAGS)
 71    LDFLAGS      := $(RELEASE_LDFLAGS)
 72 endif
 73 
 74 ifeq (YES, $(PROFILE))
 75    CFLAGS   := $(CFLAGS) -pg -O3
 76    CXXFLAGS := $(CXXFLAGS) -pg -O3
 77    LDFLAGS  := $(LDFLAGS) -pg
 78 endif
 79 
 80 CFLAGS += $(patsubst %, -I%,$(subst :, ,$(INCLUDE)))
 81 CXXFLAGS += $(patsubst %, -I%,$(subst :, ,$(INCLUDE)))
 82 
 83 all: $(OUTPUT_DLL) $(OUTPUT_LIB)
 84     
 85 lib:$(OUTPUT_LIB)
 86 
 87 dll:$(OUTPUT_DLL)
 88 
 89 $(OUTPUT_DLL):$(OBJS)
 90     @echo ===================== Linking $(OUTPUT_DLL) in $(BIN_DIR) =========================
 91     $(LD) -shared -fPIC -o $(BIN_DIR)$@ $(LDFLAGS) $(patsubst %, $(OBJ_DIR)%,$(OBJS)) $(LIBS)
 92     
 93 $(OUTPUT_LIB):$(OBJS)
 94     @echo ===================== Linking $(OUTPUT_LIB) in $(BIN_DIR) =========================
 95     @ar -rsv -o $(BIN_DIR)$@ $(patsubst %, $(OBJ_DIR)%,$(OBJS))
 96     
 97 %.o:%.cpp
 98     @echo ===================== compiling $< =======================
 99     $(CXX) -c $(CXXFLAGS)  $< -fPIC  -o $(OBJ_DIR)$@
100 %.o:%.c
101     @echo ===================== compiling $< ========================
102     $(CC) -c $(CFLAGS) $< -fPIC -o $(OBJ_DIR)$@
103 #
104 # @command    clean
105 # @brief    remove all output files and clear screen
106 #
107 clean:
108     -@rm $(patsubst %,$(OBJ_DIR)%,$(OBJS))
109     -@rm $(patsubst %,$(BIN_DIR)%,$(OUTPUT_LIB))
110     -@rm $(patsubst %,$(BIN_DIR)%,$(OUTPUT_DLL))
111     clear

 

posted on 2019-02-19 14:43  lijianbo  阅读(191)  评论(0编辑  收藏  举报

导航